Full Code of python-cn/slack_bot for AI

master 713f8431eedc cached
39 files
190.3 KB
95.6k tokens
139 symbols
1 requests
Download .txt
Showing preview only (207K chars total). Download the full file or copy to clipboard to get everything.
Repository: python-cn/slack_bot
Branch: master
Commit: 713f8431eedc
Files: 39
Total size: 190.3 KB

Directory structure:
gitextract_wzu9i0ah/

├── .gitignore
├── LICENSE
├── Procfile
├── README.md
├── manage.py
├── requirements.txt
├── runtime.txt
├── slack_bot/
│   ├── __init__.py
│   ├── app.py
│   ├── ext.py
│   ├── local_settings.py.example
│   ├── plugins/
│   │   ├── __init__.py
│   │   ├── airpollution.py
│   │   ├── baidumap.py
│   │   ├── bj_bus.py
│   │   ├── consts.py
│   │   ├── data/
│   │   │   ├── baidu_tag.pkl
│   │   │   ├── bjbus_lines.pkl
│   │   │   └── cityid
│   │   ├── dianping.py
│   │   ├── earthquake.py
│   │   ├── events.py
│   │   ├── github_issue.py
│   │   ├── help.py
│   │   ├── movie.py
│   │   ├── orz.py
│   │   ├── pycoders.py
│   │   ├── pythonweekly.py
│   │   ├── qiubai.py
│   │   ├── simsimi.py
│   │   ├── toutiao.py
│   │   ├── travel.py
│   │   ├── utils.py
│   │   ├── v2ex.py
│   │   ├── weather.py
│   │   └── wikipedia.py
│   ├── settings.py
│   └── utils.py
└── wsgi.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover

# Translations
*.mo
*.pot

# Django stuff:
*.log

# Sphinx documentation
docs/_build/

# PyBuilder
target/
slack_bot/local_settings.py
*~


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2015 小明

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



================================================
FILE: Procfile
================================================
web: gunicorn wsgi:app --timeout 240 --log-file -


================================================
FILE: README.md
================================================
# slack\_bot
立志成为一个可被调戏且有用的Bot

### 介绍

很多人听过甚至曾经用过[小黄鸡](https://github.com/wong2/xiaohuangji-new). 你可以把本bot理解为`增加了很多功能`, `只保留小黄鸡交流的基本逻辑`,
`用于slack`channel里面的`小黄鸡`. 它主要借用slack的[Outgoing Webhooks](https://api.slack.com/outgoing-webhooks),
也使用了[私聊](https://api.slack.com/methods/chat.postMessage)和[upload](https://api.slack.com/methods/files.upload).

项目使用flask, 目前本项目是一个heroku应用. 地址是 https://slack-bot2.herokuapp.com/slack_callback 但是你也可以直接裸跑

```python
gunicorn wsgi:app localhost:5000 --timeout 240 --log-file -
```

### 我们使用slack的特性

1. 可以把消息私聊发给自己
2. 可以使用带图的方式接收结果(支持canvas, 以下会看到例图)

### 模块用途

继承自小黄鸡的模块们, 但是都做了对应的修改:

1. 空气插件
2. wikipedia
3. 地震了
4. 糗百
5. orz

新加的模块们:

#### 地图插件 - 你可以输入我想从哪去哪, 会给你个路线(步行/开车/公交)
![](screenshots/map.png)
![](screenshots/map2.png)

#### 天气插件 - 使用了百度api, 获得城市的天气情况
![](screenshots/weather.png)

#### 北京公交插件 - 可以查询北京公交线路, 获取实时的到某站的信息(有些线路站点不准)
![](screenshots/bus.png)
![](screenshots/bus2.png)

#### 美食插件 - 使用大众点评网api, 获取附近餐饮信息, 评分, 电话地址,距离等等
![](screenshots/dianping.png)

#### 技术活动插件 - 从segmentfault/csdn/车库咖啡/活动行获得最近的活动列表
![](screenshots/events.png)

#### Github\_issue插件 - 获得你个人或者组织下未处理的Pull requests列表
![](screenshots/issue.png)

#### 电影信息插件 - 列出最近上映和即将上映的电影信息
![](screenshots/movie.png)

#### pycoders插件 - 获得<pycoders weekly>订阅数据
![](screenshots/pycoders.png)

#### pythonweekly插件 - 获得<pythonweekly>订阅数据
![](screenshots/pythonweekly.png)

#### 头条插件 - 获得今日头条新闻
![](screenshots/toutiao.png)

#### travel插件 - 旅游推荐/景点介绍
![](screenshots/travel.png)
![](screenshots/travel2.png)

#### v2ex feed插件 - 获得一些节点的最新feed
![](screenshots/v2ex.png)

#### help插件 - 列出所有插件的帮助信息
![](screenshots/help.png)

#### 最主要的是小黄鸡(simsim)
![](screenshots/simsim.png)

#### 也可以直接发到个人的slackbot channel里:

![](screenshots/direct.png)
![](screenshots/direct2.png)

### 提交pull request

我们欢迎你把你想要的idea实现出来, 或者在看过本项目代码后用于个人以及私有公司的插件遇到bug, 发现瓶颈等时候
给我们PR

### 插件编写

插件放在plugins目录下,每个插件是一个python文件,提供两个接口,`test`和`handle`,格式如下:

```python
def test(data):
   // your code
```

`test`方法返回`True`或`False`,说明是否要用该插件处理这一条请求


```python
def handle(data, **kwargs):
    // your code
```

`handle`方法则实际处理请求,它需要返回一个utf-8编码的字符串或者一个tuple,用来作为小黄鸡对这条请求的答复:

1. 返回只包含一个字符串表示不支持带图模式
2. 返回一个(字符串, 一个attachment的列表), 每个attachment可以使用plugins/utils.py的 `gen_attachment` 生成

`data` 是一个dict, 它是slack在回调的时候的请求, 一般情况下你只需要关注`data['message']`这个`消息全文`字段.

注意事项:

1. 请把新的插件的名字也加在plugins/\_\_init\_\_.py的 `__all__` 里面
2. 如果其他插件都不符合, 会默认使用小黄鸡接口
3. 本地调试可以使用这样的http请求:

    ```
    http -f POST http://localhost:5000/slack_callback token=jLGMzrZn3P1lS2sD848KpPuN text='颐和园景点介绍' team_id=T0001 team_domain=example channel_id=C2147483705 channel_name=test timestamp=1355517523.000005 user_id=U2147483697 user_name=Steve trigger_word=''
    ```

4. 你也可以这样调试:

    ```
    $python manage.py send 今天天气很不错
    !是啊是啊  好想出去玩
    ```

### TODO

- [ ] 输入xx有什么可玩的
- [ ] 今天中午吃什么

- [x] 输入我想从哪去哪, 调用地图api.给个路线
- [x] 附近有什么可吃的(大众点评)
- [x] 最近都有神马技术聚会
- [x] Pycoders Weekly & Python Weekly 汇总
- [x] 今日头条
- [x] 公交车离我还有多久/远
- [x] v2ex feed
- [x] github上的issue列表
- [x] 最近(将)上映的电影(豆瓣电影)
- [x] 旅游路线推荐/景点介绍


### Pending

1. 打车
2. 叫快递
3. 叫外卖


================================================
FILE: manage.py
================================================
# coding=utf-8
import json
from pprint import pprint

from flask import current_app
from flask_script import Manager, Server

from slack_bot.app import create_app

manager = Manager(create_app)
manager.add_option('-c', '--config', dest='config', required=False)
manager.add_command(
    'runserver', Server(use_debugger=True, use_reloader=True, host='0.0.0.0')
)


@manager.option('text')
def send(text):
    """Send text to slack callback url"""
    data = current_app.config['TEST_DATA']
    uri = current_app.config['SLACK_CALLBACK']
    client = current_app.test_client()

    data['text'] = text
    rv = client.post(uri, data=data)
    if rv.status_code == 200:
        body = rv.data
        if not body:
            print('Response body is empty!')
            return

        obj = json.loads(body)
        if not obj.get('attachments'):
            obj = obj['text']
            print(obj)
        else:
            pprint(obj)
    else:
        print('Error!\nstatus code: %s\nbody: %s' % (rv.status_code, rv.data))

if __name__ == '__main__':
    manager.run()


================================================
FILE: requirements.txt
================================================
flask
requests
lxml
pytz
gunicorn
Flask-Cache
flask-redis
Flask-Script
jieba
pypinyin
beautifulsoup4
flask-slackbot==0.2.1


================================================
FILE: runtime.txt
================================================
python-2.7.9


================================================
FILE: slack_bot/__init__.py
================================================


================================================
FILE: slack_bot/app.py
================================================
# coding=utf-8
import os
import re

from flask import Flask

from flask_slackbot import SlackBot

import settings
import plugins
from ext import redis_store, cache
from utils import timeout
from plugins.utils import convert2str, replaced


plugin_modules = []
for plugin_name in plugins.__all__:
    __import__('slack_bot.plugins.%s' % plugin_name)
    plugin_modules.append(getattr(plugins, plugin_name))


def create_app(config=None):
    app = Flask(__name__)
    app.config.from_object(settings)

    if isinstance(config, dict):
        app.config.update(config)
    elif config:
        app.config.from_pyfile(os.path.realpath(config))

    redis_store.init_app(app)
    cache.init_app(app)
    app.cache = cache
    app.plugin_modules = plugin_modules

    slackbot = SlackBot(app)
    slackbot.set_handler(callback)
    slackbot.filter_outgoing(_filter)

    return app


def callback(kwargs):
    s = convert2str(kwargs['text'])
    trigger_word = convert2str(kwargs['trigger_word'])
    # remove trigger_words
    if trigger_word is not None:
        s = replaced(s, trigger_word.split(','))
    # remove metion block
    s = re.sub(r'(@.*?)\W', '', s)
    private = any([word in s for word in ['private', '私聊']])
    attachmented = any([word in s for word in ['带图', '附件']])
    data = {
        'message': replaced(s, ['private', '私聊', '带图', '附件']).strip()
    }

    if not data['message']:
        return {'text': ''}

    for plugin_module in plugin_modules:
        if plugin_module.test(data):
            ret = plugin_module.handle(data)
            if not isinstance(ret, tuple):
                text = ret
                attaches = None
            else:
                text, attaches = ret
            if trigger_word is None:
                text = '!' + text
            if attachmented and attaches:
                return {'text': ' ', 'private': private,
                        'attachments': attaches}
            return {'text': text, 'private': private}

    return {'text': '!呵呵'}


def _filter(line):
    return line.startswith('!')


if __name__ == '__main__':
    app = create_app()
    app.debug = True
    app.run()


================================================
FILE: slack_bot/ext.py
================================================
# coding=utf-8
from flask_redis import FlaskRedis
from flask_cache import Cache

redis_store = FlaskRedis()
cache = Cache()


================================================
FILE: slack_bot/local_settings.py.example
================================================
# coding=utf-8

DEBUG = False
SECRET_KEY = 'your secert key'

SLACK_CHAT_TOKEN = 'your slack char token'
SLACK_CALLBACK = 'your slack bot callback uri'
REDIS_URL = 'redis://localhost:6379/0'
ORG_NAME = 'your organization slug'
BAIDU_AK = 'your baidu ak'
SIMSIMI_KEY = 'your simsimi key'

CACHE_TYPE = 'simple'

TEST_DATA = {
    'token': 'token',
    'text': 'text',
    'team_id': 'team_id',
    'team_domain': 'team_domain',
    'channel_id': 'channel_id',
    'channel_name': 'channel_name',
    'timestamp': 'timestamp',
    'user_id': 'user_id',
    'user_name': 'user_name',
    'trigger_word': 'trigger_word',
}


================================================
FILE: slack_bot/plugins/__init__.py
================================================
# coding=utf-8
__all__ = [
    'help',
    'github_issue',
    'baidumap',
    'bj_bus',
    'pycoders',
    'v2ex',
    'toutiao',
    'movie',
    'events',
    'dianping',
    'pythonweekly',
    'wikipedia',
    'qiubai',
    'earthquake',
    'travel',
    'airpollution',
    'weather',
    'orz',
    'simsimi',
]


================================================
FILE: slack_bot/plugins/airpollution.py
================================================
#!/usr/bin/env python
# -*-coding:utf-8-*-

"""
Copyright (c) 2012 Qijiang Fan <fqj1994@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""

# 空气污染
import requests
import json
from bs4 import BeautifulSoup

from slack_bot.ext import cache
from utils import gen_attachment

description = """
空气质量, 触发条件: "[城市名] 空气 [私聊] [带图]",比如:
* 空气
* 天津空气
"""


city = json.loads(
    """[["\u5317\u4eac", "Beijing"], ["\u5929\u6d25", "Tianjin"], ["\u4e0a\u6d77", "Shanghai"], ["\u91cd\u5e86", "Chongqing"], ["\u77f3\u5bb6\u5e84", "Shijiazhuang"], ["\u5510\u5c71", "Tangshan"], ["\u79e6\u7687\u5c9b", "Qinhuangdao"], ["\u90af\u90f8", "Handan"], ["\u4fdd\u5b9a", "Baoding"], ["\u90a2\u53f0", "Xingtai"], ["\u5f20\u5bb6\u53e3", "Zhangjiakou"], ["\u627f\u5fb7", "Chengde"], ["\u5eca\u574a", "Cangzhou"], ["\u5eca\u574a", "Langfang"], ["\u8861\u6c34", "Hengshui"], ["\u592a\u539f", "Taiyuan"], ["\u5927\u540c", "Datong"], ["\u9633\u6cc9", "Yangquan"], ["\u957f\u6cbb", "Changzhi"], ["\u4e34\u6c7e", "Linfen"], ["\u547c\u548c\u6d69\u7279", "Huhehaote"], ["\u5305\u5934", "Baotou"], ["\u8d64\u5cf0", "Chifeng"], ["\u6c88\u9633", "Shenyang"], ["\u5927\u8fde", "Dalian"], ["\u978d\u5c71", "Anshan"], ["\u629a\u987a", "Fushun"], ["\u672c\u6eaa", "Benxi"], ["\u9526\u5dde", "Jinzhou"], ["\u957f\u6625", "Changchun"], ["\u5409\u6797", "Jilin"], ["\u54c8\u5c14\u6ee8", "Haerbin"], ["\u9f50\u9f50\u54c8\u5c14", "Qiqihaer"], ["\u5927\u5e86", "Daqing"], ["\u7261\u4e39\u6c5f", "Mudanjiang"], ["\u5357\u4eac", "Nanjing"], ["\u65e0\u9521", "Wuxi"], ["\u5f90\u5dde", "Xuzhou"], ["\u5e38\u5dde", "Changzhou"], ["\u82cf\u5dde", "Suzhou"], ["\u5357\u901a", "Nantong"], ["\u8fde\u4e91\u6e2f", "Lianyungang"], ["\u626c\u5dde", "Yangzhou"], ["\u9547\u6c5f", "Zhenjiang"], ["\u6dee\u5b89", "Huaian"], ["\u76d0\u57ce", "Yancheng"], ["\u53f0\u5dde", "Taizhou"], ["\u5bbf\u8fc1", "Suqian"], ["\u676d\u5dde", "Hangzhou"], ["\u5b81\u6ce2", "Ningbo"], ["\u6e29\u5dde", "Wenzhou"], ["\u5609\u5174", "Jiaxing"], ["\u6e56\u5dde", "Huzhou"], ["\u7ecd\u5174", "Shaoxing"], ["\u91d1\u534e", "Jinhua"], ["\u8862\u5dde", "Quzhou"], ["\u821f\u5c71", "Zhoushan"], ["\u4e3d\u6c34", "Lishui"], ["\u5408\u80a5", "Hefei"], ["\u829c\u6e56", "Wuhu"], ["\u9a6c\u978d\u5c71", "Maanshan"], ["\u798f\u5dde", "Fuzhou"], ["\u53a6\u95e8", "Xiamen"], ["\u6cc9\u5dde", "Quanzhou"], ["\u5357\u660c", "Nanchang"], ["\u4e5d\u6c5f", "Jiujiang"], ["\u6d4e\u5357", "Jinan"], ["\u9752\u5c9b", "Qingdao"], ["\u6dc4\u535a", "Zibo"], ["\u67a3\u5e84", "Zaozhuang"], ["\u70df\u53f0", "Yantai"], ["\u6f4d\u574a", "Weifang"], ["\u6d4e\u5b81", "Jining"], ["\u6cf0\u5b89", "Taian"], ["\u5a01\u6d77", "Weihai"], ["\u65e5\u7167", "Rizhao"], ["\u4e1c\u8425", "Dongying"], ["\u83b1\u829c", "Laiwu"], ["\u4e34\u6c82", "Linyi"], ["\u5fb7\u5dde", "Dezhou"], ["\u804a\u57ce", "Liaocheng"], ["\u6ee8\u5dde", "Binzhou"], ["\u83cf\u6cfd", "Heze"], ["\u90d1\u5dde", "Zhengzhou"], ["\u5f00\u5c01", "Kaifeng"], ["\u6d1b\u9633", "Luoyang"], ["\u5e73\u9876\u5c71", "Pingdingshan"], ["\u5b89\u9633", "Anyang"], ["\u7126\u4f5c", "Jiaozuo"], ["\u4e09\u95e8\u5ce1", "Sanmenxia"], ["\u6b66\u6c49", "Wuhan"], ["\u5b9c\u660c", "Yichang"], ["\u8346\u5dde", "Jingzhou"], ["\u957f\u6c99", "Changsha"], ["\u682a\u6d32", "Zhuzhou"], ["\u6e58\u6f6d", "Xiangtan"], ["\u5cb3\u9633", "Yueyang"], ["\u5e38\u5fb7", "Changde"], ["\u5f20\u5bb6\u754c", "Zhangjiajie"], ["\u5e7f\u5dde", "Guangzhou"], ["\u97f6\u5173", "Shaoguan"], ["\u6df1\u5733", "Shenzhen"], ["\u73e0\u6d77", "Zhuhai"], ["\u6c55\u5934", "Shantou"], ["\u4f5b\u5c71", "Foshan"], ["\u6e5b\u6c5f", "Zhanjiang"], ["\u4e2d\u5c71", "Zhongshan"], ["\u6c5f\u95e8", "Jiangmen"], ["\u8087\u5e86", "Zhaoqing"], ["\u4e1c\u839e", "Dongguan"], ["\u60e0\u5dde", "Huizhou"], ["\u987a\u5fb7", "Shunde"], ["\u5357\u5b81", "Nanning"], ["\u67f3\u5dde", "Liuzhou"], ["\u6842\u6797", "Guilin"], ["\u5317\u6d77", "Beihai"], ["\u6d77\u53e3", "Haikou"], ["\u4e09\u4e9a", "Sanya"], ["\u6210\u90fd", "Chengdu"], ["\u81ea\u8d21", "Zigong"], ["\u6500\u679d\u82b1", "Panzhihua"], ["\u6cf8\u5dde", "Luzhou"], ["\u5fb7\u9633", "Deyang"], ["\u7ef5\u9633", "Mianyang"], ["\u5357\u5145", "Nanchong"], ["\u5b9c\u5bbe", "Yibin"], ["\u8d35\u9633", "Guiyang"], ["\u9075\u4e49", "Zunyi"], ["\u6606\u660e", "Kunming"], ["\u66f2\u9756", "Qujing"], ["\u7389\u6eaa", "Yuxi"], ["\u62c9\u8428", "Lhasa"], ["\u897f\u5b89", "Xian"], ["\u94dc\u5ddd", "Tongchuan"], ["\u5b9d\u9e21", "Baoji"], ["\u54b8\u9633", "Xianyang"], ["\u6e2d\u5357", "Weinan"], ["\u5ef6\u5b89", "Yanan"], ["\u5170\u5dde", "Lanzhou"], ["\u91d1\u660c", "Jinchang"], ["\u897f\u5b81", "Xining"], ["\u94f6\u5ddd", "Yinchuan"], ["\u77f3\u5634\u5c71", "Shizuishan"], ["\u4e4c\u9c81\u6728\u9f50", "Wulumuqi"], ["\u514b\u62c9\u739b\u4f9d", "Karamay"]]""")  # noqa
headers = {'Referer': 'http://aqicn.org/city/beijing/cn/',
           'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36'}  # noqa


def test(data):
    message = data['message']
    if '空气' not in message:
        return False
    req = filter(lambda p: p[0].encode('utf-8') in message, city)
    return len(req) > 0


def get_desc(cityname, cityshort):
    if cache is not None:
        r = cache.get('airpollution.%s' % (cityshort))
        if r:
            return r

    title_link = 'http://aqicn.org/city/{}/cn/'.format(cityshort.lower())

    r = requests.get(title_link, headers=headers)
    r.encoding = 'utf-8'
    p = r.text

    soup = BeautifulSoup(p)
    aqiwgtinfo = soup.find(id="aqiwgtinfo'").text
    aqivalue = soup.find("div", {'class': 'aqivalue'}).text
    min_pm25 = soup.find(id='min_pm25').text
    max_pm25 = soup.find(id='max_pm25').text
    text = '{0}实时空气质量指数(AQI): {1} {2} [最大:{3}, 最小:{4}]'.format(
        cityname.encode('utf-8'), aqiwgtinfo.encode('utf-8'), aqivalue,
        max_pm25, min_pm25)
    if cache is not None:
        cache.set('airpollution.%s' % (cityshort), text, 1800)
    image_url = soup.find(id='tr_pm25').find(id='td_pm25').find(
        'img').attrs.get('src')
    title = soup.find('title').text
    attaches = [gen_attachment(text, image_url, title=title,
                               title_link=title_link)]
    return text, attaches


def handle(data):
    message = data['message']
    reqs = filter(lambda p: p[0].encode('utf-8') in message, city)
    req = reqs[0]
    try:
        return get_desc(req[0], req[1])
    except Exception as e:
        print 'Error: {}'.format(e)
    return '空气查询失败, 请重试!', []


if __name__ == '__main__':
    print handle({'message': '北京空气'})


================================================
FILE: slack_bot/plugins/baidumap.py
================================================
# coding=utf-8

# 百度地图
import os
import re
import cPickle as pickle
from datetime import datetime

from flask import current_app as app
import requests

from utils import to_pinyin

description = """
路线规划, 触发条件: "从 地名 到|去 地名 [出行方式] [私聊]"。比如:
我想从兆维工业园到北京南站 步行
"""

HERE = os.path.abspath(os.path.dirname(__file__))
REGEX = re.compile(ur'从(\w+)[\u53bb|\u5230](\w+)', re.UNICODE)
HTML_REGEX = re.compile(r'(<.*?>)')
SUGGESTION_API = 'http://api.map.baidu.com/place/v2/suggestion'
DIRECTION_API = 'http://api.map.baidu.com/direction/v1'
GEOCODING_API = 'http://api.map.baidu.com/geocoder/v2/'
POINT_API = 'http://api.map.baidu.com/telematics/v3/point'
TRAVEL_ATTRACTIONS_API = 'http://api.map.baidu.com/telematics/v3/travel_attractions'  # noqa
TRAVEL_CITY_API = 'http://api.map.baidu.com/telematics/v3/travel_city'
LOCAL_API = 'http://api.map.baidu.com/telematics/v3/local'
WEATHER_API = 'http://api.map.baidu.com/telematics/v3/weather'

DIRECTION = 0
NODIRECTION = 1
NOSCHEME = 2

TagList = pickle.load(
    open(os.path.join(HERE, 'data' + os.path.sep + 'baidu_tag.pkl'), 'rb'))


def address2geo(ak, address, city=u'北京'):
    res = requests.get(GEOCODING_API, params={
        'city': city, 'address': address, 'ak': ak, 'output': 'json'})
    data = res.json()
    if data['status']:
        # 一般是无相关结果
        return False
    if not data['result']['precise'] and data['result']['confidence'] <= 50:
        # 可信度太低, 需要确认
        return False
    return data['result']['location']


def geo2address(ak, location):
    res = requests.get(GEOCODING_API, params={
        'location': location, 'ak': ak, 'output': 'json'})
    data = res.json()
    if data['status']:
        return False
    return data['result']['formatted_address']


def place_suggestion(ak, pos):
    res = requests.get(SUGGESTION_API, params={
        'query': pos, 'region': 131, 'ak': ak, 'output': 'json'})
    return [r['name'] for r in res.json()['result']]


def place_direction(ak, origin, destination, mode='transit', tactics=11,
                    region='北京', origin_region='北京',
                    destination_region='北京'):
    params = {
        'origin': origin, 'destination': destination, 'ak': ak,
        'output': 'json', 'mode': mode, 'tactics': tactics
    }
    if mode != 'transit':
        params.update({
            'origin_region': origin_region,
            'destination_region': destination_region
        })
    else:
        params.update({'region': region})
    res = requests.get(DIRECTION_API, params=params).json()
    result = res.get('result', [])

    # type=1起终点模糊
    if res['type'] == 1:
        if not result:
            return (NOSCHEME, place_suggestion(ak, origin),
                    place_suggestion(ak, destination))
        if mode != 'transit':
            _origin = result['origin']['content']
            _dest = result['destination']['content']
        else:
            _origin = result.get('origin', [])
            _dest = result.get('destination', [])
        o = ['{0}: {1}'.format(
            r['name'].encode('utf-8') if r['name'] else '',
            r['address'].encode('utf-8') if r['address'] else '')
            for r in _origin]
        d = ['{0}: {1}'.format(
            r['name'].encode('utf-8') if r['name'] else '',
            r['address'].encode('utf-8') if r['address'] else '')
            for r in _dest]
        return (NODIRECTION, o, d)
    # 起终点明确
    if mode == 'driving':
        # 驾车
        taxi = result['taxi']
        for d in taxi['detail']:
            if u'白天' in d['desc']:
                daytime = d
            else:
                night = d
        is_daytime = 5 < datetime.now().hour < 23
        price = daytime['total_price'] if is_daytime else night['total_price']
        remark = taxi['remark']
        taxi_text = u'{0} 预计打车费用 {1}元'.format(remark, price)
        steps = result['routes'][0]['steps']
        steps = [re.sub(HTML_REGEX, '', s['instructions']) for s in steps]
        return (DIRECTION, '\n'.join(steps), taxi_text)
    elif mode == 'walking':
        steps = result['routes'][0]['steps']
        steps = [re.sub(HTML_REGEX, '', s['instructions']) for s in steps]
        return (DIRECTION, '\n'.join(steps), '')
    else:
        schemes = result['routes']
        steps = []
        for index, scheme in enumerate(schemes, 1):
            scheme = scheme['scheme'][0]
            step = '*方案{0} [距离: {1}公里, 花费: {2}元, 耗时: {3}分钟]:\n'.format(
                index, scheme['distance'] / 1000,
                scheme['price'] / 100,
                scheme['duration'] / 60)
            step += '\n'.join([
                re.sub(HTML_REGEX, '',
                       s[0]['stepInstruction'].encode('utf-8'))
                for s in scheme['steps']
            ])
            step += '\n' + '-' * 40
            steps.append(step)
        return (DIRECTION, steps, '')


# 车联网API
def point(ak, keyword, city=u'北京'):
    '''兴趣点查询'''
    res = requests.get(POINT_API, params={
        'keyword': keyword, 'city': city, 'ak': ak, 'output': 'json'})
    data = res.json()
    return data['pointList']


def travel_attractions(ak, id):
    '''景点详情'''
    id = to_pinyin(id)
    res = requests.get(TRAVEL_ATTRACTIONS_API, params={
        'id': id, 'ak': ak, 'output': 'json'})
    data = res.json()
    if data['error']:
        return '找不到这个景点'
    data = res.json()['result']
    return '\n'.join([
        data['description'],
        u'票价: ' + data['ticket_info']['price'],
        u'开放时间: ' + data['ticket_info']['open_time']
    ])


def travel_city(ak, location=u'北京', day='all'):
    '''X日游'''
    res = requests.get(TRAVEL_CITY_API, params={
        'location': location, 'day': day, 'ak': ak, 'output': 'json'})
    return res.json()['result']


def local(ak, tag, keyword, location=u'北京', radius=3000, city=u'北京'):
    '''周边检索'''
    res = requests.get(LOCAL_API, params={
        'cityName': city, 'radius': radius, 'tag': tag,
        'keyWord': keyword, 'location': location, 'ak': ak, 'output': 'json'})
    return res.json()['pointList']


def weather(ak, location=u'北京'):
    # location可是是城市名, 也可以是geo
    res = requests.get(WEATHER_API, params={
        'location': location, 'ak': ak, 'output': 'json'})
    return res.json()['results'][0]['weather_data']


def test(data):
    message = data['message']
    if not isinstance(message, unicode):
        message = message.decode('utf-8')
    return REGEX.search(message)


def handle(data):
    if app is None:
        ak = '18691b8e4206238f331ad2e1ca88357e'
    else:
        ak = app.config.get('BAIDU_AK')
    message = data['message']
    if not isinstance(message, unicode):
        message = message.decode('utf-8')
    origin, dest = REGEX.search(message).groups()

    tmpl = '最优路线: {0} {1}'
    if any([text in message for text in [u'开车', u'驾车']]):
        mode = 'driving'
        tmpl = '最优路线: {0} \n[{1}]'
    elif u'步行' in message:
        mode = 'walking'
    else:
        # 公交
        mode = 'transit'

    result = place_direction(ak, origin, dest, mode)
    if result[0] == NOSCHEME:
        text = '\n'.join(['输入的太模糊了, 你要找得起点可以选择:',
                          '|'.join(result[1]),
                          '终点可以选择:',
                          '|'.join(result[2])])
    elif result[0] == NODIRECTION:
        reg = ''
        if result[1]:
            reg += '起点'
        if result[2]:
            reg += '终点'
        msg = ['输入的{}太模糊了: 以下是参考:'.format(reg)] + \
            result[1] + result[2]

        text = '\n'.join(msg)
    else:
        if isinstance(result[1], list):
            _result = '\n'.join(result[1])
        else:
            _result = result[1].encode('utf-8')
        text = tmpl.format(_result, result[2].encode('utf-8'))
    return text


if __name__ == '__main__':
    print handle({'message': '我想从兆维工业园到北京南站'})
    print handle({'message': '我想从人大到北京南站'})
    print handle({'message': '我想从人大到豆瓣'})
    print handle({'message': '我想从兆维工业园到北京南站 步行'})
    print handle({'message': '我想从兆维工业园到北京南站 开车'})
    print handle({'message': '从酒仙桥去798'})


================================================
FILE: slack_bot/plugins/bj_bus.py
================================================
# coding=utf-8
import os
import urllib2
import hashlib
from datetime import date
import cPickle as pickle

import lxml.etree as ET

from utils import timestamp2str

description = """
北京公交信息, 触发条件: "公交 路数 [当前所在第几站] [私聊]", 比如:
* 公交 571
* 公交 571 18
"""

URL1 = u'/aiguang/bjgj.c?m=checkUpdate&version=1'
URL2 = u'/aiguang/bjgj.c?m=update&id={0}'
URL3 = (u'/bus.php?city=%E5%8C%97%E4%BA%AC&id={0}'
        u'&no={1}&type={2}&encrypt={3}&versionid=2')
URL4 = u'http://bjgj.aibang.com:8899'


# https://github.com/andelf/beijing-realtime-bus/blob/master/bjgj.py
class Cipher(object):
    __doc__ = u'encrypt & decrypt base64 data'

    def __init__(self, key):
        self.key = str(key)

    @staticmethod
    def new_from_key(key):
        return Cipher((u'aibang' + str(key)))

    def _make_translate_table(self):
        key_bytes = bytearray(hashlib.md5(self.key).hexdigest(), u'utf-8')
        ret_val = list(range(256L))
        k = 0L
        m = 0L
        for i in range(256L):
            k = (255L & ((k + key_bytes[m]) + ret_val[i]))
            [ret_val[i], ret_val[k]] = [ret_val[k], ret_val[i]]
            m = ((1L + m) % len(key_bytes))
        return ret_val

    def translate(self, raw):
        trans_table = self._make_translate_table()
        raw_bytes = bytearray(raw)
        ret_val = bytearray(len(raw_bytes))
        j = 0L
        k = 0L
        for i in range(len(raw_bytes)):
            k = (255L & (k + 1L))
            j = (255L & (j + trans_table[k]))
            [trans_table[j], trans_table[k]] = [trans_table[k], trans_table[j]]
            n = (255L & (trans_table[k] + trans_table[j]))
            ret_val[i] = (raw_bytes[i] ^ trans_table[n])
        return str(ret_val)

    def decrypt(self, cipher_text):
        return self.translate(cipher_text.decode(u'base64')) if cipher_text else ''

    def encrypt(self, plain_text):
        return self.translate(plain_text).encode(u'base64')


def decrypt_busline_etree(et):
    busline = xpath_etree_children_to_dict_list(u'//busline', et)[0L]
    stations = xpath_etree_children_to_dict_list(
        u'//busline/stations/station', et)
    cipher = Cipher.new_from_key(busline[u'lineid'])
    busline = dict(
        *[busline],
        **{k: cipher.decrypt(v).decode(u'utf-8')
            for (k, v) in busline.items()
            if (k in [u'shotname', u'coord', u'linename'])}
    )

    def _hy_anon_fn_9():
        f_1236 = (lambda it: {k: cipher.decrypt(v).decode(
            u'utf-8', u'ignore') for (k, v) in it.items()})
        for v_1235 in stations:
            yield f_1236(v_1235)

    stations = list(_hy_anon_fn_9())
    busline[u'stations'] = stations
    return busline


def decrypt_bus_realtime_info(bus):
    cipher = Cipher.new_from_key(bus[u'gt'])
    return dict(
        *[bus],
        **{k: cipher.decrypt(v).decode(u'utf-8')
            for (k, v) in bus.items()
            if (k in [u'ns', u'nsn', u'sd',
                      u'srt', u'st', u'x', u'y'])}
    )


def etree_xpath_children_to_dict_list(et, path):
    return xpath_etree_children_to_dict_list(path, et)


def xpath_etree_children_to_dict_list(path, et):
    def _hy_anon_fn_15():
        f_1238 = (
            lambda it: {elem.tag: elem.text for elem in it.getchildren()})
        for v_1237 in et.xpath(path):
            yield f_1238(v_1237)
    return list(_hy_anon_fn_15())


# Updated at Fri Jul  3 00:31:56 2015
# By andelf
INIT_BUSLINE_STORE = pickle.load(file(
    os.path.join(os.path.dirname(__file__),
                 'data' + os.path.sep + 'bjbus_lines.pkl'), 'r'))


class BeijingBusApi(object):
    __doc__ = u'Beijing Realtime Bus API.'

    def __init__(self):
        self.opener = urllib2.build_opener()
        self.uid = u'233333333333333333333333333333333333333'
        self.opener.addheaders = [
            (u'SOURCE', u'1'), (u'PKG_SOURCE', u'1'), (u'OS', u'android'),
            (u'ROM', u'4.2.1'), (u'RESOLUTION', u'1280*720'),
            (u'MANUFACTURER', u'2013022'), (u'MODEL', u'2013022'),
            (u'UA', u'2013022,17,4.2.1,HBJ2.0,Unknown,1280*720'),
            (u'IMSI', u'233333333333333'), (u'IMEI', u'233333333333333'),
            (u'UID', self.uid), (u'CID', self.uid), (u'PRODUCT', u'nextbus'),
            (u'PLATFORM', u'android'), (u'VERSION', u'1.0.5'),
            (u'FIRST_VERSION', u'2'), (u'PRODUCTID', u'5'),
            (u'VERSIONID', u'2'), (u'CUSTOM', u'aibang')
        ]
        # FIXME: use date as update time flag is not accurate
        self.updated_time = date(2015, 7, 3)
        self.linename_cache = INIT_BUSLINE_STORE
        self.busline_info_cache = dict()

    def check_update(self):
        update_flags = self.get_update_flags()
        for flag in update_flags:
            id = flag['id']
            if flag['version'] != self.linename_cache[id]['version']:
                self.linename_cache[id] = flag
                info = self.get_busline_info(id)
                self.linename_cache[id]['linename'] = info['linename']
                print('update ... ')
        self.updated_time = date.today()

    def api_open(self, path, url_base=u'http://mc.aibang.com'):
        return self.opener.open((url_base + path)).read()

    # FIXME: this only returns first match
    def query_busline_id_by_name(self, name):
        if not isinstance(name, unicode):
            name = name.decode('utf-8')

        for flag in self.linename_cache.values():
            # A linename uses format: [Variant]<LineNo>(StartStation-EndStation)
            if flag.get('linename', u'').split(u'(')[0] == name:
                return flag['id']

        return None

    def get_update_flags(self):
        def _hy_anon_fn_19():
            f_1240 = (lambda it: {k: int(v) for (k, v) in it.items()})
            for v_1239 in xpath_etree_children_to_dict_list(
                u'//line',
                ET.fromstring(self.api_open(URL1))
            ):
                yield f_1240(v_1239)
        return list(_hy_anon_fn_19())

    def get_busline_info(self, id):
        id = int(id)
        if id in self.busline_info_cache:
            return self.busline_info_cache[id]
        # FIXME: multi-line id handling
        # xml = self.api_open(URL2.format(u'%2C'.join(map(str, ([id] + list(ids))))))
        xml = self.api_open(URL2.format(id))
        buslines = ET.fromstring(xml)
        info = list(map(decrypt_busline_etree, buslines))[0]

        # Save cache
        self.busline_info_cache[id] = info
        return info

    def get_busline_realtime_info(self, id, no):
        def _hy_anon_fn_22():
            f_1242 = (lambda it: decrypt_bus_realtime_info(it))
            for v_1241 in etree_xpath_children_to_dict_list(
                ET.fromstring(
                    self.api_open(URL3.format(id, no, 2L, 1L), URL4)),
                u'//data/bus'
            ):
                yield f_1242(v_1241)
        return list(_hy_anon_fn_22())
# end

b = BeijingBusApi()
b.check_update()


def check_update(b):
    if b.updated_time.day != date.today().day:
        b.check_update()


def _get_busline_info_by_name(busline):
    id = b.query_busline_id_by_name(unicode(busline))
    ret = b.get_busline_info(id) if id else None
    if ret:
        return ret['stations']
    return ''


def get_site_id_by_name(busline, name):
    for site in _get_busline_info_by_name(busline):
        if site['name'] == name:
            return site['no']
    return False


def get_busline_info(busline):
    check_update(b)
    stations = _get_busline_info_by_name(busline)
    if stations:
        return '\n'.join([u'第{0}站: {1}'.format(s['no'], s['name'])
                          for s in stations])
    return '查不到线路'


def get_busline_realtime_info(busline, site):
    check_update(b)
    id = b.query_busline_id_by_name(busline)
    if not site.isdigit():
        site = get_site_id_by_name(busline, site)
        if not site:
            return '请使用正确地ID或者站点名字, 查询请使用类似`公交 busline`'
    realtime_infos = b.get_busline_realtime_info(id, site)

    return '\n'.join([
        (u'*车次{0}: 下站: {1} 离下一站的距离: {2}米, 预计到达下一站的时间: {3}\n'
         u'离本站的距离: {4}米, 预计到达本站的时间: {5}').format(
             index, r['ns'], r['nsd'] if r['nsd'] != '-1' else u'进站中',
             timestamp2str(r['nst']), r['sd'],
             timestamp2str(r['st']) if r['st'] != '-1' else u'未知')
        for index, r in enumerate(realtime_infos, 1)
        if r.values().count('-1') < 3
    ])


def test_query_busline(message):
    return message.startswith(u'公交') and len(message.split()) == 2


def test_query_realtime(message):
    return u'公交' in message and len(message.split()) == 3


def test(data):
    message = data['message']
    if not isinstance(message, unicode):
        message = message.decode('utf-8')
    return test_query_busline(message) or test_query_realtime(message)


def handle(data, **kwargs):
    message = data['message']
    if not isinstance(message, unicode):
        message = message.decode('utf-8')
    # 查询公交线路
    if test_query_busline(message):
        busline = message.split()[1].strip()
        return get_busline_info(busline)
    else:
        _, busline, site_num = message.split()
        # if not busline.isdigit():
        #     return '查询公交全部站点ID和名字请使用类似`公交 busline`, 比如: 公交 571'
        return get_busline_realtime_info(busline, site_num) or '查不到线路'


if __name__ == '__main__':
    print(handle({'message': '公交 614'}))
    print(handle({'message': '公交 614 中关园'}))
    print(handle({'message': '公交 夜2'}))  # works only at night
    print(handle({'message': '公交 夜2 大红门北站'}))


================================================
FILE: slack_bot/plugins/consts.py
================================================
# coding=utf-8
ONE_MINUTE = 60
HALF_HOUR = 60 * 30
ONE_HOUR = 60 * 60
HALF_DAY = 60 * 60 * 12
ONE_DAY = 60 * 60 * 24

COLORS = (
    '#001f3f',  # Navy
    '#0074D9',  # Blue
    '#7FDBFF',  # Aqua
    '#39CCCC',  # Teal
    '#3D9970',  # Olive
    '#2ECC40',  # Green
    '#01FF70',  # Lime
    '#FFDC00',  # Yellow
    '#FF851B',  # Orange
    '#FF4136',  # Red
    '#85144b',  # Maroon
    '#F012BE',  # Fuchsia
    '#b10dc9',  # Purple
    '#111111',  # black
    '#aaaaaa',  # Gray
    '#dddddd',  # Silver
)


================================================
FILE: slack_bot/plugins/data/baidu_tag.pkl
================================================
(lp1
V\u7f8e\u98df,\u4e2d\u9910\u9986,\u9c81\u83dc
p2
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u5ddd\u83dc
p3
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u7ca4\u83dc
p4
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u5fbd\u83dc
p5
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u53f0\u6e7e\u83dc
p6
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u8d35\u5dde\u83dc
p7
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u6c5f\u6d59\u83dc
p8
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u6e58\u83dc
p9
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u6e56\u5317\u83dc
p10
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u6e05\u771f\u83dc
p11
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u4e91\u5357\u83dc
p12
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u4e1c\u5317\u83dc
p13
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u5317\u4eac\u83dc
p14
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u95fd\u5357\u83dc
p15
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u897f\u5317\u83dc
p16
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u7d20\u83dc
p17
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u706b\u9505
p18
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u70e4\u9e2d
p19
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u6d77\u9c9c
p20
aV\u7f8e\u98df,\u4e2d\u9910\u9986,\u5bb6\u5e38\u83dc
p21
aV\u7f8e\u98df,\u897f\u9910\u5385,\u610f\u5927\u5229\u83dc
p22
aV\u7f8e\u98df,\u897f\u9910\u5385,\u6cd5\u56fd\u83dc
p23
aV\u7f8e\u98df,\u897f\u9910\u5385,\u5fb7\u56fd\u83dc
p24
aV\u7f8e\u98df,\u897f\u9910\u5385,\u4fc4\u7f57\u65af\u83dc
p25
aV\u7f8e\u98df,\u897f\u9910\u5385,\u62c9\u7f8e\u70e7\u70e4
p26
aV\u7f8e\u98df,\u897f\u9910\u5385,\u4e2d\u4e1c\u6599\u7406
p27
aV\u7f8e\u98df,\u897f\u9910\u5385,\u62ab\u8428
p28
aV\u7f8e\u98df,\u897f\u9910\u5385,\u725b\u6392
p29
aV\u7f8e\u98df,\u65e5\u672c\u83dc,\u65e5\u672c\u6599\u7406
p30
aV\u7f8e\u98df,\u65e5\u672c\u83dc,\u65e5\u5f0f\u70e7\u70e4
p31
aV\u7f8e\u98df,\u65e5\u672c\u83dc,\u5bff\u53f8
p32
aV\u7f8e\u98df,\u4e1c\u5357\u4e9a\u83dc,\u6cf0\u56fd\u83dc
p33
aV\u7f8e\u98df,\u4e1c\u5357\u4e9a\u83dc,\u8d8a\u5357\u83dc
p34
aV\u7f8e\u98df,\u4e1c\u5357\u4e9a\u83dc,\u5370\u5ea6\u83dc
p35
aV\u7f8e\u98df,\u4e1c\u5357\u4e9a\u83dc,\u83f2\u5f8b\u5bbe\u83dc
p36
aV\u7f8e\u98df,\u4e1c\u5357\u4e9a\u83dc,\u5370\u5c3c\u98ce\u5473
p37
aV\u7f8e\u98df,\u5feb\u9910,\u4e2d\u5f0f\u5feb\u9910
p38
aV\u7f8e\u98df,\u5feb\u9910,\u897f\u5f0f\u5feb\u9910
p39
aV\u7f8e\u98df,\u5c0f\u5403,\u7c89\u9762\u9986
p40
aV\u7f8e\u98df,\u5c0f\u5403,\u7ca5\u5e97
p41
aV\u7f8e\u98df,\u5c0f\u5403,\u997a\u5b50\u9986
p42
aV\u7f8e\u98df,\u5c0f\u5403,\u9984\u9968\u5e97
p43
aV\u7f8e\u98df,\u5c0f\u5403,\u9ebb\u8fa3\u70eb
p44
aV\u7f8e\u98df,\u5c0f\u5403,\u5173\u4e1c\u716e
p45
aV\u7f8e\u98df,\u5c0f\u5403,\u719f\u98df
p46
aV\u7f8e\u98df,\u5c0f\u5403,\u96f6\u98df
p47
aV\u7f8e\u98df,\u5c0f\u5403,\u5305\u5b50
p48
aV\u7f8e\u98df,\u86cb\u7cd5\u751c\u70b9,\u86cb\u7cd5\u897f\u70b9
p49
aV\u7f8e\u98df,\u86cb\u7cd5\u751c\u70b9,\u51b0\u6dc7\u6dcb
p50
aV\u7f8e\u98df,\u86cb\u7cd5\u751c\u70b9,\u751c\u70b9\u996e\u54c1
p51
aV\u5bbe\u9986,\u661f\u7ea7\u9152\u5e97,\u4e94\u661f\u7ea7\u9152\u5e97
p52
aV\u5bbe\u9986,\u661f\u7ea7\u9152\u5e97,\u56db\u661f\u7ea7\u9152\u5e97
p53
aV\u5bbe\u9986,\u661f\u7ea7\u9152\u5e97,\u4e09\u661f\u7ea7\u9152\u5e97
p54
aV\u5bbe\u9986,\u65c5\u5e97,\u5bb6\u5ead\u65c5\u9986
p55
aV\u5bbe\u9986,\u65c5\u5e97,\u9752\u5e74\u65c5\u820d
p56
aV\u5bbe\u9986,\u65c5\u5e97,\u62db\u5f85\u6240
p57
aV\u8d2d\u7269,\u5bb6\u7535,\u7a7a\u8c03
p58
aV\u8d2d\u7269,\u5bb6\u7535,\u51b0\u7bb1
p59
aV\u8d2d\u7269,\u5bb6\u7535,\u6d17\u8863\u673a
p60
aV\u8d2d\u7269,\u5bb6\u7535,\u5fae\u6ce2\u7089
p61
aV\u8d2d\u7269,\u6570\u7801,\u7535\u8111
p62
aV\u8d2d\u7269,\u6570\u7801,\u6444\u5f71
p63
aV\u8d2d\u7269,\u6570\u7801,\u624b\u673a
p64
aV\u8d2d\u7269,\u5bb6\u5c45\u5efa\u6750,\u5bb6\u5177
p65
aV\u8d2d\u7269,\u5bb6\u5c45\u5efa\u6750,\u706f\u9970
p66
aV\u8d2d\u7269,\u5bb6\u5c45\u5efa\u6750,\u53a8\u5177
p67
aV\u8d2d\u7269,\u5bb6\u5c45\u5efa\u6750,\u536b\u6d74
p68
aV\u8d2d\u7269,\u5bb6\u5c45\u5efa\u6750,\u4e94\u91d1
p69
aV\u8d2d\u7269,\u5bb6\u7eba,\u5e8a\u4e0a\u7528\u54c1
p70
aV\u8d2d\u7269,\u5bb6\u7eba,\u7a97\u5e18
p71
aV\u8d2d\u7269,\u5bb6\u7eba,\u5750\u57ab
p72
aV\u8d2d\u7269,\u5bb6\u7eba,\u5730\u6bef
p73
aV\u8d2d\u7269,\u4e66\u5e97/\u97f3\u50cf\u5e97,\u4e66\u5e97
p74
aV\u8d2d\u7269,\u4e66\u5e97/\u97f3\u50cf\u5e97,\u97f3\u50cf\u5e97
p75
aV\u8d2d\u7269,\u670d\u88c5/\u978b\u5e3d/\u7bb1\u5305,\u978b\u5b50
p76
aV\u8d2d\u7269,\u670d\u88c5/\u978b\u5e3d/\u7bb1\u5305,\u670d\u88c5
p77
aV\u8d2d\u7269,\u670d\u88c5/\u978b\u5e3d/\u7bb1\u5305,\u7bb1\u5305
p78
aV\u8d2d\u7269,\u73e0\u5b9d\u9970\u54c1,\u5a5a\u6212
p79
aV\u8d2d\u7269,\u82b1\u5e97/\u793c\u54c1\u5e97,\u82b1\u5e97
p80
aV\u8d2d\u7269,\u82b1\u5e97/\u793c\u54c1\u5e97,\u793c\u54c1\u5e97
p81
aV\u8d2d\u7269,\u8336\u53f6/\u8336\u5177,\u8336\u53f6
p82
aV\u8d2d\u7269,\u8336\u53f6/\u8336\u5177,\u8336\u5177
p83
aV\u8d2d\u7269,\u4e50\u5668\u884c,\u7434\u884c
p84
aV\u8d2d\u7269,\u96c6\u5e02/\u6279\u53d1\u5e02\u573a,\u519c\u8d38\u5e02\u573a
p85
aV\u8d2d\u7269,\u96c6\u5e02/\u6279\u53d1\u5e02\u573a,\u670d\u88c5\u6279\u53d1\u5e02\u573a
p86
aV\u8d2d\u7269,\u96c6\u5e02/\u6279\u53d1\u5e02\u573a,\u8f7b\u7eba\u5e02\u573a
p87
aV\u8d2d\u7269,\u96c6\u5e02/\u6279\u53d1\u5e02\u573a,\u836f\u6750\u6279\u53d1\u5e02\u573a
p88
aV\u8d2d\u7269,\u96c6\u5e02/\u6279\u53d1\u5e02\u573a,\u6587\u5177\u6279\u53d1\u5e02\u573a
p89
aV\u8d2d\u7269,\u96c6\u5e02/\u6279\u53d1\u5e02\u573a,\u5c0f\u5546\u54c1\u5e02\u573a
p90
aV\u8d2d\u7269,\u96c6\u5e02/\u6279\u53d1\u5e02\u573a,\u82b1\u9e1f\u5e02\u573a
p91
aV\u8d2d\u7269,\u96c6\u5e02/\u6279\u53d1\u5e02\u573a,\u4e8c\u624b\u5e02\u573a
p92
aV\u6c7d\u8f66\u670d\u52a1,\u6c7d\u8f66\u9500\u552e,4S\u5e97
p93
aV\u6c7d\u8f66\u670d\u52a1,\u6c7d\u8f66\u9500\u552e,\u6c7d\u8f66\u9500\u552e\u7efc\u5408\u5e97
p94
aV\u6c7d\u8f66\u670d\u52a1,\u6c7d\u8f66\u7f8e\u5bb9,\u6c7d\u8f66\u4fdd\u517b
p95
aV\u6c7d\u8f66\u670d\u52a1,\u6c7d\u8f66\u7f8e\u5bb9,\u6c7d\u8f66\u88c5\u9970
p96
aV\u751f\u6d3b\u670d\u52a1,\u901a\u8baf\u8425\u4e1a\u5385,\u7535\u4fe1\u8425\u4e1a\u5385
p97
aV\u751f\u6d3b\u670d\u52a1,\u901a\u8baf\u8425\u4e1a\u5385,\u79fb\u52a8\u8425\u4e1a\u5385
p98
aV\u751f\u6d3b\u670d\u52a1,\u901a\u8baf\u8425\u4e1a\u5385,\u8054\u901a\u8425\u4e1a\u5385
p99
aV\u751f\u6d3b\u670d\u52a1,\u901a\u8baf\u8425\u4e1a\u5385,\u94c1\u901a\u8425\u4e1a\u5385
p100
aV\u751f\u6d3b\u670d\u52a1,\u901a\u8baf\u8425\u4e1a\u5385,\u7f51\u901a\u8425\u4e1a\u5385
p101
aV\u751f\u6d3b\u670d\u52a1,\u706b\u8f66\u7968/\u673a\u7968/\u6c7d\u8f66\u7968\u552e\u7968\u70b9,\u706b\u8f66\u7968\u552e\u7968\u70b9
p102
aV\u751f\u6d3b\u670d\u52a1,\u706b\u8f66\u7968/\u673a\u7968/\u6c7d\u8f66\u7968\u552e\u7968\u70b9,\u98de\u673a\u7968\u552e\u7968\u70b9
p103
aV\u751f\u6d3b\u670d\u52a1,\u706b\u8f66\u7968/\u673a\u7968/\u6c7d\u8f66\u7968\u552e\u7968\u70b9,\u6c7d\u8f66\u7968\u552e\u7968\u70b9
p104
aV\u751f\u6d3b\u670d\u52a1,\u88c1\u7f1d\u5e97/\u6d17\u8863\u5e97,\u88c1\u7f1d\u5e97
p105
aV\u751f\u6d3b\u670d\u52a1,\u88c1\u7f1d\u5e97/\u6d17\u8863\u5e97,\u6d17\u8863\u5e97
p106
aV\u751f\u6d3b\u670d\u52a1,\u56fe\u6587\u5feb\u5370,\u6253\u5370\u590d\u5370
p107
aV\u751f\u6d3b\u670d\u52a1,\u56fe\u6587\u5feb\u5370,\u4f20\u771f
p108
aV\u751f\u6d3b\u670d\u52a1,\u56fe\u6587\u5feb\u5370,\u5feb\u7167
p109
aV\u751f\u6d3b\u670d\u52a1,\u7167\u76f8\u9986,\u827a\u672f\u5199\u771f
p110
aV\u751f\u6d3b\u670d\u52a1,\u7167\u76f8\u9986,\u8bc1\u4ef6\u7167
p111
aV\u751f\u6d3b\u670d\u52a1,\u6570\u7801\u7ef4\u4fee,\u7535\u8111\u7ef4\u4fee
p112
aV\u751f\u6d3b\u670d\u52a1,\u6570\u7801\u7ef4\u4fee,\u624b\u673a\u7ef4\u4fee
p113
aV\u751f\u6d3b\u670d\u52a1,\u5bb6\u653f\u670d\u52a1,\u642c\u5bb6
p114
aV\u751f\u6d3b\u670d\u52a1,\u5bb6\u653f\u670d\u52a1,\u4fdd\u59c6
p115
aV\u751f\u6d3b\u670d\u52a1,\u5bb6\u653f\u670d\u52a1,\u7ba1\u9053\u758f\u901a
p116
aV\u751f\u6d3b\u670d\u52a1,\u5bb6\u653f\u670d\u52a1,\u949f\u70b9\u5de5
p117
aV\u751f\u6d3b\u670d\u52a1,\u5bb6\u653f\u670d\u52a1,\u5bb6\u7535\u7ef4\u4fee
p118
aV\u751f\u6d3b\u670d\u52a1,\u5bb6\u653f\u670d\u52a1,\u9001\u6c34
p119
aV\u751f\u6d3b\u670d\u52a1,\u5bb6\u653f\u670d\u52a1,\u5f00\u9501
p120
aV\u751f\u6d3b\u670d\u52a1,\u5ba0\u7269,\u5ba0\u7269\u7f8e\u5bb9
p121
aV\u751f\u6d3b\u670d\u52a1,\u5ba0\u7269,\u5ba0\u7269\u7528\u54c1
p122
aV\u751f\u6d3b\u670d\u52a1,\u5ba0\u7269,\u5ba0\u7269\u533b\u9662
p123
aV\u751f\u6d3b\u670d\u52a1,\u5ba0\u7269,\u5ba0\u7269\u5bc4\u517b
p124
aV\u751f\u6d3b\u670d\u52a1,\u5ba0\u7269,\u5ba0\u7269\u98df\u54c1
p125
aV\u751f\u6d3b\u670d\u52a1,\u8f66\u8f86\u7ef4\u4fee,\u6469\u6258\u8f66\u7ef4\u4fee
p126
aV\u751f\u6d3b\u670d\u52a1,\u8f66\u8f86\u7ef4\u4fee,\u81ea\u884c\u8f66\u7ef4\u4fee
p127
aV\u751f\u6d3b\u670d\u52a1,\u65c5\u884c\u793e,\u56fd\u9645\u65c5\u884c\u793e
p128
aV\u7ed3\u5a5a,\u5a5a\u5e86\u670d\u52a1,\u5a5a\u5e86\u7b56\u5212
p129
aV\u7ed3\u5a5a,\u5a5a\u5e86\u670d\u52a1,\u5e86\u5178\u7528\u54c1
p130
aV\u7ed3\u5a5a,\u5a5a\u5e86\u670d\u52a1,\u5a5a\u5e86\u79df\u8f66
p131
aV\u7ed3\u5a5a,\u5a5a\u5e86\u670d\u52a1,\u53f8\u4eea\u7763\u5bfc
p132
aV\u7ed3\u5a5a,\u5a5a\u5e86\u670d\u52a1,\u8ddf\u5986\u9020\u578b
p133
aV\u4e3d\u4eba,\u7f8e\u5bb9,SPA
p134
aV\u4e3d\u4eba,\u7f8e\u5bb9,\u9762\u90e8\u62a4\u7406
p135
aV\u4e3d\u4eba,\u7f8e\u53d1,\u6d17\u67d3\u70eb
p136
aV\u91d1\u878d,\u94f6\u884c,atm
p137
aV\u91d1\u878d,\u4fe1\u7528\u793e,\u519c\u6751\u4fe1\u7528\u793e
p138
aV\u91d1\u878d,\u4fe1\u7528\u793e,\u57ce\u5e02\u4fe1\u7528\u793e
p139
aV\u4f11\u95f2\u5a31\u4e50,\u5ea6\u5047\u6751/\u519c\u5bb6\u9662/\u91c7\u6458\u56ed,\u519c\u5bb6\u9662
p140
aV\u4f11\u95f2\u5a31\u4e50,\u5ea6\u5047\u6751/\u519c\u5bb6\u9662/\u91c7\u6458\u56ed,\u5ea6\u5047
p141
aV\u4f11\u95f2\u5a31\u4e50,\u5ea6\u5047\u6751/\u519c\u5bb6\u9662/\u91c7\u6458\u56ed,\u91c7\u6458\u56ed
p142
aV\u4f11\u95f2\u5a31\u4e50,\u591c\u603b\u4f1a/\u6b4c\u821e\u5385/\u5a31\u4e50\u57ce/\u8fea\u5385,\u591c\u603b\u4f1a
p143
aV\u4f11\u95f2\u5a31\u4e50,\u591c\u603b\u4f1a/\u6b4c\u821e\u5385/\u5a31\u4e50\u57ce/\u8fea\u5385,\u6b4c\u821e\u5385
p144
aV\u4f11\u95f2\u5a31\u4e50,\u591c\u603b\u4f1a/\u6b4c\u821e\u5385/\u5a31\u4e50\u57ce/\u8fea\u5385,\u5a31\u4e50\u57ce
p145
aV\u4f11\u95f2\u5a31\u4e50,\u591c\u603b\u4f1a/\u6b4c\u821e\u5385/\u5a31\u4e50\u57ce/\u8fea\u5385,\u8fea\u5385
p146
aV\u4f11\u95f2\u5a31\u4e50,\u6d17\u6d74/\u6309\u6469/\u8db3\u6d74/\u6e29\u6cc9,\u6d17\u6d74\u4e2d\u5fc3
p147
aV\u4f11\u95f2\u5a31\u4e50,\u6d17\u6d74/\u6309\u6469/\u8db3\u6d74/\u6e29\u6cc9,\u6851\u62ff
p148
aV\u4f11\u95f2\u5a31\u4e50,\u6d17\u6d74/\u6309\u6469/\u8db3\u6d74/\u6e29\u6cc9,\u6e29\u6cc9
p149
aV\u4f11\u95f2\u5a31\u4e50,\u6d17\u6d74/\u6309\u6469/\u8db3\u6d74/\u6e29\u6cc9,\u6309\u6469
p150
aV\u4f11\u95f2\u5a31\u4e50,\u6d17\u6d74/\u6309\u6469/\u8db3\u6d74/\u6e29\u6cc9,\u8db3\u6d74
p151
aV\u4f11\u95f2\u5a31\u4e50,\u6e38\u620f,\u7535\u73a9
p152
aV\u4f11\u95f2\u5a31\u4e50,\u6e38\u620f,\u68cb\u724c\u5ba4
p153
aV\u4f11\u95f2\u5a31\u4e50,\u6e38\u620f,\u684c\u6e38
p154
aV\u4f11\u95f2\u5a31\u4e50,\u6e38\u620f,\u771f\u4ebaCS
p155
aV\u4f11\u95f2\u5a31\u4e50,\u9152\u5427/\u8336\u5ea7/\u5496\u5561\u5385,\u9152\u5427
p156
aV\u4f11\u95f2\u5a31\u4e50,\u9152\u5427/\u8336\u5ea7/\u5496\u5561\u5385,\u8336\u5ea7
p157
aV\u4f11\u95f2\u5a31\u4e50,\u9152\u5427/\u8336\u5ea7/\u5496\u5561\u5385,\u5496\u5561\u5385
p158
aV\u4f11\u95f2\u5a31\u4e50,DIY\u624b\u5de5,DIY\u86cb\u7cd5
p159
aV\u4f11\u95f2\u5a31\u4e50,DIY\u624b\u5de5,DIY\u9970\u54c1
p160
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u6e38\u6cf3\u9986
p161
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u7fbd\u6bdb\u7403\u9986
p162
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u4e52\u4e53\u7403\u9986
p163
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u53f0\u7403\u9986
p164
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u4fdd\u9f84\u7403\u9986
p165
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u6b66\u672f\u9986
p166
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u4f53\u64cd\u9986
p167
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u7f51\u7403\u573a
p168
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u7bee\u7403\u573a
p169
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u8db3\u7403\u573a
p170
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u6e9c\u51b0\u573a
p171
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u9ad8\u5c14\u592b\u7403\u573a
p172
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u6ed1\u96ea\u573a
p173
aV\u8fd0\u52a8\u5065\u8eab,\u4f53\u80b2\u573a\u9986,\u8d5b\u9a6c\u573a
p174
aV\u8fd0\u52a8\u5065\u8eab,\u821e\u8e48,\u82ad\u857e
p175
aV\u8fd0\u52a8\u5065\u8eab,\u6781\u9650\u8fd0\u52a8,\u6f5c\u6c34
p176
aV\u8fd0\u52a8\u5065\u8eab,\u6781\u9650\u8fd0\u52a8,\u8d5b\u8f66\u573a
p177
aV\u8fd0\u52a8\u5065\u8eab,\u6781\u9650\u8fd0\u52a8,\u6500\u5ca9
p178
aV\u8fd0\u52a8\u5065\u8eab,\u6781\u9650\u8fd0\u52a8,\u8e66\u6781
p179
aV\u8fd0\u52a8\u5065\u8eab,\u6781\u9650\u8fd0\u52a8,\u822a\u7a7a\u6ed1\u7fd4
p180
aV\u8fd0\u52a8\u5065\u8eab,\u6781\u9650\u8fd0\u52a8,\u51b2\u6d6a
p181
aV\u8fd0\u52a8\u5065\u8eab,\u6781\u9650\u8fd0\u52a8,\u5b9a\u5411\u8d8a\u91ce
p182
aV\u533b\u7597,\u533b\u9662,\u4e09\u7532\u533b\u9662
p183
aV\u533b\u7597,\u533b\u9662,\u4e09\u4e59\u533b\u9662
p184
aV\u533b\u7597,\u533b\u9662,\u4e09\u4e19\u533b\u9662
p185
aV\u533b\u7597,\u533b\u9662,\u4e8c\u7532\u533b\u9662
p186
aV\u533b\u7597,\u533b\u9662,\u4e8c\u4e59\u533b\u9662
p187
aV\u533b\u7597,\u533b\u9662,\u4e8c\u4e19\u533b\u9662
p188
aV\u533b\u7597,\u533b\u9662,\u4e00\u7ea7\u533b\u9662
p189
aV\u533b\u7597,\u533b\u9662,\u7efc\u5408\u533b\u9662
p190
aV\u533b\u7597,\u533b\u9662,\u5987\u4ea7\u79d1\u533b\u9662
p191
aV\u533b\u7597,\u533b\u9662,\u5987\u79d1\u533b\u9662
p192
aV\u533b\u7597,\u533b\u9662,\u513f\u7ae5\u533b\u9662
p193
aV\u533b\u7597,\u533b\u9662,\u53e3\u8154\u533b\u9662
p194
aV\u533b\u7597,\u533b\u9662,\u80bf\u7624\u533b\u9662
p195
aV\u533b\u7597,\u533b\u9662,\u7cbe\u795e\u75c5\u533b\u9662
p196
aV\u533b\u7597,\u533b\u9662,\u7cd6\u5c3f\u75c5\u533b\u9662
p197
aV\u533b\u7597,\u533b\u9662,\u7259\u79d1\u533b\u9662
p198
aV\u533b\u7597,\u533b\u9662,\u773c\u79d1\u533b\u9662
p199
aV\u533b\u7597,\u533b\u9662,\u9aa8\u79d1\u533b\u9662
p200
aV\u533b\u7597,\u533b\u9662,\u7537\u79d1\u533b\u9662
p201
aV\u533b\u7597,\u533b\u9662,\u76ae\u80a4\u75c5\u533b\u9662
p202
aV\u533b\u7597,\u533b\u9662,\u5fc3\u7406\u533b\u9662
p203
aV\u533b\u7597,\u533b\u9662,\u4f20\u67d3\u75c5\u533b\u9662
p204
aV\u533b\u7597,\u533b\u9662,\u5987\u5e7c\u4fdd\u5065\u9662
p205
aV\u533b\u7597,\u533b\u9662,\u809b\u80a0\u79d1\u533b\u9662
p206
aV\u533b\u7597,\u533b\u9662,\u5fc3\u8840\u7ba1\u75c5\u533b\u9662
p207
aV\u533b\u7597,\u533b\u9662,\u4e94\u5b98\u79d1\u533b\u9662
p208
aV\u533b\u7597,\u533b\u9662,\u4e2d\u533b\u9662
p209
aV\u65c5\u6e38\u666f\u70b9,\u516c\u56ed,\u52a8\u7269\u56ed
p210
aV\u65c5\u6e38\u666f\u70b9,\u516c\u56ed,\u690d\u7269\u56ed
p211
aV\u65c5\u6e38\u666f\u70b9,\u516c\u56ed,\u56fd\u5bb6\u516c\u56ed
p212
aV\u65c5\u6e38\u666f\u70b9,\u98ce\u666f\u533a,5A\u98ce\u666f\u533a
p213
aV\u65c5\u6e38\u666f\u70b9,\u98ce\u666f\u533a,4A\u98ce\u666f\u533a
p214
aV\u65c5\u6e38\u666f\u70b9,\u98ce\u666f\u533a,3A\u98ce\u666f\u533a
p215
aV\u6559\u80b2,\u5b66\u6821,\u5e7c\u513f\u56ed
p216
aV\u6559\u80b2,\u5b66\u6821,\u5c0f\u5b66
p217
aV\u6559\u80b2,\u5b66\u6821,\u521d\u4e2d
p218
aV\u6559\u80b2,\u5b66\u6821,\u9ad8\u4e2d
p219
aV\u6559\u80b2,\u5b66\u6821,\u4e2d\u4e13
p220
aV\u6559\u80b2,\u5b66\u6821,\u5927\u5b66
p221
aV\u6559\u80b2,\u5b66\u6821,\u7279\u6b8a\u6559\u80b2\u5b66\u6821
p222
aV\u57f9\u8bad\u673a\u6784,\u6280\u80fd\u57f9\u8bad,\u9a7e\u6821
p223
aV\u57f9\u8bad\u673a\u6784,\u6280\u80fd\u57f9\u8bad,\u7535\u8111\u57f9\u8bad
p224
aV\u57f9\u8bad\u673a\u6784,\u6280\u80fd\u57f9\u8bad,\u7f8e\u5bb9\u57f9\u8bad
p225
aV\u57f9\u8bad\u673a\u6784,\u6280\u80fd\u57f9\u8bad,\u7f8e\u53d1\u57f9\u8bad
p226
aV\u57f9\u8bad\u673a\u6784,\u6280\u80fd\u57f9\u8bad,\u53a8\u5e08\u57f9\u8bad
p227
aV\u57f9\u8bad\u673a\u6784,\u827a\u672f\u57f9\u8bad,\u7f8e\u672f\u57f9\u8bad
p228
aV\u57f9\u8bad\u673a\u6784,\u827a\u672f\u57f9\u8bad,\u5409\u4ed6\u57f9\u8bad
p229
aV\u57f9\u8bad\u673a\u6784,\u827a\u672f\u57f9\u8bad,\u94a2\u7434\u57f9\u8bad
p230
aV\u57f9\u8bad\u673a\u6784,\u827a\u672f\u57f9\u8bad,\u5c0f\u63d0\u7434\u57f9\u8bad
p231
aV\u57f9\u8bad\u673a\u6784,\u827a\u672f\u57f9\u8bad,\u58f0\u4e50\u57f9\u8bad
p232
aV\u57f9\u8bad\u673a\u6784,\u8bed\u8a00\u57f9\u8bad,\u65e5\u8bed\u57f9\u8bad
p233
aV\u57f9\u8bad\u673a\u6784,\u8bed\u8a00\u57f9\u8bad,\u97e9\u8bed\u57f9\u8bad
p234
aV\u57f9\u8bad\u673a\u6784,\u8bed\u8a00\u57f9\u8bad,\u82f1\u8bed\u57f9\u8bad
p235
aV\u57f9\u8bad\u673a\u6784,\u8bed\u8a00\u57f9\u8bad,\u6cd5\u8bed\u57f9\u8bad
p236
aV\u57f9\u8bad\u673a\u6784,\u8bed\u8a00\u57f9\u8bad,\u5fb7\u8bed\u57f9\u8bad
p237
aV\u57f9\u8bad\u673a\u6784,\u8003\u8bd5\u57f9\u8bad,GRE\u57f9\u8bad
p238
aV\u57f9\u8bad\u673a\u6784,\u8003\u8bd5\u57f9\u8bad,\u9ad8\u8003\u57f9\u8bad
p239
aV\u57f9\u8bad\u673a\u6784,\u8003\u8bd5\u57f9\u8bad,\u8003\u7814\u57f9\u8bad
p240
aV\u57f9\u8bad\u673a\u6784,\u8003\u8bd5\u57f9\u8bad,\u516c\u52a1\u5458\u8003\u8bd5\u57f9\u8bad
p241
aV\u57f9\u8bad\u673a\u6784,\u8003\u8bd5\u57f9\u8bad,\u53f8\u6cd5\u8003\u8bd5\u57f9\u8bad
p242
aV\u57f9\u8bad\u673a\u6784,\u8003\u8bd5\u57f9\u8bad,TOFEL\u57f9\u8bad
p243
aV\u57f9\u8bad\u673a\u6784,\u8003\u8bd5\u57f9\u8bad,\u56db\u516d\u7ea7\u57f9\u8bad
p244
aV\u57f9\u8bad\u673a\u6784,\u4f53\u80b2\u57f9\u8bad,\u4e52\u4e53\u7403\u57f9\u8bad
p245
aV\u57f9\u8bad\u673a\u6784,\u4f53\u80b2\u57f9\u8bad,\u7fbd\u6bdb\u7403\u57f9\u8bad
p246
aV\u57f9\u8bad\u673a\u6784,\u4f53\u80b2\u57f9\u8bad,\u7f51\u7403\u57f9\u8bad
p247
aV\u623f\u5730\u4ea7,\u4f4f\u5b85\u533a,\u5c0f\u533a
p248
aV\u623f\u5730\u4ea7,\u4f4f\u5b85\u533a,\u516c\u5bd3
p249
aV\u623f\u5730\u4ea7,\u4f4f\u5b85\u533a,\u522b\u5885
p250
aV\u884c\u653f\u533a\u5212,\u79d1\u6280\u56ed,\u8f6f\u4ef6\u56ed
p251
aV\u884c\u653f\u533a\u5212,\u5f00\u53d1\u533a,\u65c5\u6e38\u5f00\u53d1\u533a
p252
aV\u884c\u653f\u533a\u5212,\u5f00\u53d1\u533a,\u7ecf\u6d4e\u5f00\u53d1\u533a
p253
aV\u884c\u653f\u533a\u5212,\u5f00\u53d1\u533a,\u9ad8\u65b0\u6280\u672f\u5f00\u53d1\u533a
p254
aV\u653f\u5e9c\u673a\u6784,\u653f\u5e9c,\u56fd\u52a1\u9662
p255
aV\u653f\u5e9c\u673a\u6784,\u653f\u5e9c,\u7701\u653f\u5e9c
p256
aV\u653f\u5e9c\u673a\u6784,\u653f\u5e9c,\u5e02\u653f\u5e9c
p257
aV\u653f\u5e9c\u673a\u6784,\u653f\u5e9c,\u53bf\u653f\u5e9c
p258
aV\u653f\u5e9c\u673a\u6784,\u653f\u5e9c,\u9547\u653f\u5e9c
p259
aV\u653f\u5e9c\u673a\u6784,\u653f\u5e9c,\u8857\u9053\u529e\u4e8b\u5904
p260
aV\u653f\u5e9c\u673a\u6784,\u653f\u5e9c,\u653f\u5e9c\u9a7b\u5730\u529e\u4e8b\u5904
p261
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u516c\u5b89\u5c40
p262
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u6d3e\u51fa\u6240
p263
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u4ea4\u901a\u5c40
p264
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u53f8\u6cd5\u5c40
p265
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u6d88\u9632\u5c40
p266
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u5de5\u5546\u5c40
p267
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u5730\u7a0e\u5c40
p268
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u56fd\u7a0e\u5c40
p269
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u8d22\u653f\u5c40
p270
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u6c11\u653f\u5c40
p271
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u4ea4\u7ba1\u5c40
p272
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u7535\u4fe1\u5c40
p273
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u6d77\u5173
p274
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u98df\u54c1\u5c40
p275
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u5730\u9707\u5c40
p276
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u52b3\u52a8\u5c40
p277
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u6559\u80b2\u5c40
p278
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u6c14\u8c61\u5c40
p279
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u7269\u4ef7\u5c40
p280
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u70df\u8349\u4e13\u5356\u5c40
p281
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u8d28\u76d1\u5c40
p282
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u536b\u751f\u5c40
p283
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u89c4\u5212\u5c40
p284
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u6c34\u5229\u5c40
p285
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u6587\u5316\u5c40
p286
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u5ba1\u8ba1\u5c40
p287
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u65c5\u6e38\u5c40
p288
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u4f53\u80b2\u5c40
p289
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u7cae\u98df\u5c40
p290
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u623f\u7ba1\u6240
p291
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u6863\u6848\u9986
p292
aV\u653f\u5e9c\u673a\u6784,\u673a\u5173\u5355\u4f4d,\u673a\u5173\u9a7b\u5730\u529e\u4e8b\u5904
p293
aV\u653f\u5e9c\u673a\u6784,\u6d89\u5916\u673a\u6784,\u5927\u4f7f\u9986
p294
aV\u653f\u5e9c\u673a\u6784,\u6d89\u5916\u673a\u6784,\u7b7e\u8bc1\u5904
p295
aV\u653f\u5e9c\u673a\u6784,\u798f\u5229\u673a\u6784,\u656c\u8001\u9662
p296
aV\u653f\u5e9c\u673a\u6784,\u798f\u5229\u673a\u6784,\u798f\u5229\u9662
p297
aV\u653f\u5e9c\u673a\u6784,\u6148\u5584\u673a\u6784,\u7ea2\u5341\u5b57\u4f1a
p298
aV\u653f\u5e9c\u673a\u6784,\u6148\u5584\u673a\u6784,\u6b8b\u75be\u4eba\u8054\u5408\u4f1a
p299
aV\u653f\u5e9c\u673a\u6784,\u6148\u5584\u673a\u6784,\u9752\u5c11\u5e74\u57fa\u91d1\u4f1a
p300
aV\u516c\u53f8\u4f01\u4e1a,IT\u4f01\u4e1a,\u8f6f\u4ef6\u516c\u53f8
p301
aV\u516c\u53f8\u4f01\u4e1a,IT\u4f01\u4e1a,\u4e92\u8054\u7f51\u516c\u53f8
p302
aV\u516c\u53f8\u4f01\u4e1a,\u4f20\u5a92\u516c\u53f8,\u5e7f\u64ad\u7535\u89c6\u516c\u53f8
p303
aV\u516c\u53f8\u4f01\u4e1a,\u4f20\u5a92\u516c\u53f8,\u62a5\u793e
p304
aV\u516c\u53f8\u4f01\u4e1a,\u4f20\u5a92\u516c\u53f8,\u6742\u5fd7\u793e
p305
aV\u516c\u53f8\u4f01\u4e1a,\u4f20\u5a92\u516c\u53f8,\u5e7f\u544a\u516c\u53f8
p306
aV\u516c\u53f8\u4f01\u4e1a,\u516c\u7528\u4e8b\u4e1a,\u81ea\u6765\u6c34\u516c\u53f8
p307
aV\u516c\u53f8\u4f01\u4e1a,\u516c\u7528\u4e8b\u4e1a,\u7535\u529b\u516c\u53f8
p308
aV\u516c\u53f8\u4f01\u4e1a,\u516c\u7528\u4e8b\u4e1a,\u71c3\u6c14\u516c\u53f8
p309
aV\u516c\u53f8\u4f01\u4e1a,\u623f\u5730\u4ea7\u516c\u53f8,\u623f\u5730\u4ea7\u5f00\u53d1\u516c\u53f8
p310
aV\u516c\u53f8\u4f01\u4e1a,\u623f\u5730\u4ea7\u516c\u53f8,\u7269\u4e1a\u7ba1\u7406\u516c\u53f8
p311
aV\u516c\u53f8\u4f01\u4e1a,\u623f\u5730\u4ea7\u516c\u53f8,\u552e\u697c\u5904
p312
aV\u516c\u53f8\u4f01\u4e1a,\u7269\u6d41\u516c\u53f8,\u8d27\u8fd0\u516c\u53f8
p313
aV\u516c\u53f8\u4f01\u4e1a,\u4e8b\u52a1\u6240,\u5f8b\u5e08\u4e8b\u52a1\u6240
p314
aV\u516c\u53f8\u4f01\u4e1a,\u4e8b\u52a1\u6240,\u4f1a\u8ba1\u4e8b\u52a1\u6240
p315
aV\u516c\u53f8\u4f01\u4e1a,\u4e8b\u52a1\u6240,\u5ba1\u8ba1\u4e8b\u52a1\u6240
p316
aV\u516c\u53f8\u4f01\u4e1a,\u54a8\u8be2\u516c\u53f8,\u7ba1\u7406\u54a8\u8be2\u516c\u53f8
p317
aV\u516c\u53f8\u4f01\u4e1a,\u54a8\u8be2\u516c\u53f8,\u6280\u672f\u54a8\u8be2\u516c\u53f8
p318
aV\u516c\u53f8\u4f01\u4e1a,\u54a8\u8be2\u516c\u53f8,\u5de5\u7a0b\u54a8\u8be2\u516c\u53f8
p319
aV\u516c\u53f8\u4f01\u4e1a,\u54a8\u8be2\u516c\u53f8,\u6295\u8d44\u54a8\u8be2\u516c\u53f8
p320
aV\u516c\u53f8\u4f01\u4e1a,\u54a8\u8be2\u516c\u53f8,\u6559\u80b2\u54a8\u8be2\u516c\u53f8
p321
aV\u516c\u53f8\u4f01\u4e1a,\u5236\u9020\u4e1a,\u7eba\u7ec7\u516c\u53f8
p322
aV\u516c\u53f8\u4f01\u4e1a,\u5236\u9020\u4e1a,\u98df\u54c1\u516c\u53f8
p323
aV\u516c\u53f8\u4f01\u4e1a,\u5236\u9020\u4e1a,\u5236\u836f\u516c\u53f8
p324
aV\u516c\u53f8\u4f01\u4e1a,\u5236\u9020\u4e1a,\u901a\u8baf\u8bbe\u5907\u5236\u9020\u516c\u53f8
p325
aV\u516c\u53f8\u4f01\u4e1a,\u5236\u9020\u4e1a,\u8ba1\u7b97\u673a\u5236\u9020\u516c\u53f8
p326
aV\u516c\u53f8\u4f01\u4e1a,\u5236\u9020\u4e1a,\u5bb6\u7535\u5236\u9020\u516c\u53f8
p327
aV\u516c\u53f8\u4f01\u4e1a,\u5236\u9020\u4e1a,\u6c7d\u8f66\u5236\u9020\u516c\u53f8
p328
a.

================================================
FILE: slack_bot/plugins/data/bjbus_lines.pkl
================================================
(dp1
I1
(dp2
S'status'
p3
I0
sS'linename'
p4
V917\u5feb\u8f66\u5ef6\u957f\u7ebf(\u6d9e\u6c34\u4ea7\u4e1a\u56ed\u533a-\u5929\u6865)
p5
sS'id'
p6
I1
sS'version'
p7
I2
ssI3
(dp8
g3
I0
sg4
V\u8fd0\u901a123(\u6c38\u4e30\u4e2d\u8def-\u4e0a\u5730\u4e94\u8857\u4e1c\u53e3)
p9
sg6
I3
sg7
I25
ssI5
(dp10
g3
I0
sg4
V917\u5feb\u8f66\u5ef6\u957f\u7ebf(\u5929\u6865-\u6d9e\u6c34\u4ea7\u4e1a\u56ed\u533a)
p11
sg6
I5
sg7
I2
ssI7
(dp12
g3
I0
sg4
V998(\u4e30\u53f0\u897f\u7ad9-\u5927\u5317\u7a91\u5357)
p13
sg6
I7
sg7
I2
ssI9
(dp14
g3
I0
sg4
V116(\u9f99\u6f6d\u516c\u56ed-\u57ce\u94c1\u67f3\u82b3\u7ad9)
p15
sg6
I9
sg7
I21
ssI11
(dp16
g3
I0
sg4
V820(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u5927\u5730\u7ad9)
p17
sg6
I11
sg7
I2
ssI13
(dp18
g3
I0
sg4
V838(\u6dbf\u5dde\u5f00\u53d1\u533a-\u5929\u6865)
p19
sg6
I13
sg7
I2
ssI15
(dp20
g3
I0
sg4
V850\u5feb(\u4e1c\u76f4\u95e8\u5916-\u9a6c\u5761)
p21
sg6
I15
sg7
I7
ssI17
(dp22
g3
I0
sg4
V\u8fd0\u901a110(\u6765\u5e7f\u8425\u5317-\u7965\u9f99\u516c\u4ea4\u516c\u53f8)
p23
sg6
I17
sg7
I21
ssI19
(dp24
g3
I1
sg7
I6
sg6
I19
ssI21
(dp25
g3
I0
sg4
V\u8fd0\u901a201(\u6765\u5e7f\u8425\u5317-\u516d\u91cc\u6865\u957f\u9014\u7ad9)
p26
sg6
I21
sg7
I2
ssI23
(dp27
g3
I0
sg4
V\u8fd0\u901a112(\u84dd\u9f99\u5bb6\u56ed-\u53f2\u5404\u5e84)
p28
sg6
I23
sg7
I21
ssI25
(dp29
g3
I0
sg4
V\u8fd0\u901a104(\u6765\u5e7f\u8425\u5317-\u91d1\u5e84)
p30
sg6
I25
sg7
I7
ssI27
(dp31
g3
I0
sg4
V852(\u4e1c\u76f4\u95e8\u67a2\u7ebd\u7ad9-\u5e73\u8c37\u6c7d\u8f66\u7ad9)
p32
sg6
I27
sg7
I16
ssI29
(dp33
g3
I0
sg4
V835\u5feb(\u97e9\u6751\u6cb3\u897f-\u5929\u6865)
p34
sg6
I29
sg7
I21
ssI31
(dp35
g3
I0
sg4
V961(\u5927\u74e6\u7a91\u6751-\u4e09\u5bb6\u5e97\u706b\u8f66\u7ad9)
p36
sg6
I31
sg7
I2
ssI33
(dp37
g3
I0
sg4
V300\u5185(\u8349\u6865-\u8349\u6865)
p38
sg6
I33
sg7
I7
ssI35
(dp39
g3
I0
sg4
V901(\u71d5\u5316\u4e1c\u5cad-\u516d\u91cc\u6865\u5317\u91cc)
p40
sg6
I35
sg7
I7
ssI37
(dp41
g3
I0
sg4
V856(\u987a\u4e49\u5357\u5f69\u6c7d\u8f66\u7ad9-\u5174\u5bff\u7ad9)
p42
sg6
I37
sg7
I2
ssI39
(dp43
g3
I0
sg4
V942\u5feb(\u4e1c\u76f4\u95e8\u5916-\u8336\u575e\u706b\u8f66\u7ad9)
p44
sg6
I39
sg7
I16
ssI41
(dp45
g3
I0
sg4
V988\u5357\u6bb5(\u83dc\u6237\u8425\u6865\u897f-\u9a6c\u6cc9\u8425)
p46
sg6
I41
sg7
I2
ssI43
(dp47
g3
I0
sg4
V\u8fd0\u901a113(\u6765\u5e7f\u8425\u5317-\u5434\u5e84)
p48
sg6
I43
sg7
I2
ssI45
(dp49
g3
I1
sg7
I6
sg6
I45
ssI47
(dp50
g3
I0
sg4
V466(\u5317\u82d1\u5bb6\u56ed-\u4e2d\u5173\u6751\u5357)
p51
sg6
I47
sg7
I39
ssI49
(dp52
g3
I1
sg7
I10
sg6
I49
ssI51
(dp53
g3
I0
sg4
V951(\u5730\u94c1\u516b\u5b9d\u5c71\u7ad9-\u5768\u91cc)
p54
sg6
I51
sg7
I10
ssI53
(dp55
g3
I0
sg4
V838(\u5929\u6865-\u6dbf\u5dde\u5f00\u53d1\u533a)
p56
sg6
I53
sg7
I2
ssI55
(dp57
g3
I0
sg4
V919\u5feb(\u5fb7\u80dc\u95e8-\u4eac\u5f20\u8def\u53e3\u5317)
p58
sg6
I55
sg7
I25
ssI57
(dp59
g3
I0
sg4
V915(\u4e1c\u76f4\u95e8\u5916-\u987a\u4e49\u5357\u5f69\u6c7d\u8f66\u7ad9)
p60
sg6
I57
sg7
I21
ssI59
(dp61
g3
I0
sg4
V\u8fd0\u901a115(\u91d1\u5e84-\u535a\u5174\u4e00\u8def\u5317\u53e3)
p62
sg6
I59
sg7
I2
ssI61
(dp63
g3
I0
sg4
V42(\u4e1c\u56db\u5341\u6761\u6865\u897f-\u5e7f\u5916\u7518\u77f3\u6865)
p64
sg6
I61
sg7
I25
ssI63
(dp65
g3
I0
sg7
I25
sg6
I63
ssI65
(dp66
g3
I0
sg4
V641(\u91d1\u76cf\u6751-\u6d77\u6dc0\u6865\u4e1c)
p67
sg6
I65
sg7
I2
ssI67
(dp68
g3
I0
sg4
V901\u5feb(\u71d5\u5316\u4e1c\u5cad-\u524d\u95e8\u897f)
p69
sg6
I67
sg7
I10
ssI69
(dp70
g3
I0
sg4
V919(\u4f53\u80b2\u573a\u5c0f\u533a-\u5fb7\u80dc\u95e8)
p71
sg6
I69
sg7
I21
ssI71
(dp72
g3
I1
sg7
I23
sg6
I71
ssI73
(dp73
g3
I1
sg7
I25
sg6
I73
ssI75
(dp74
g3
I0
sg4
V26(\u4e8c\u91cc\u5e84-\u897f\u4fbf\u95e8)
p75
sg6
I75
sg7
I25
ssI77
(dp76
g3
I0
sg4
V940(\u51e4\u6cb3\u8425-\u4e3d\u56ed\u8def\u516c\u4ea4\u7ad9)
p77
sg6
I77
sg7
I7
ssI79
(dp78
g3
I0
sg4
V856(\u5174\u5bff\u7ad9-\u987a\u4e49\u5357\u5f69\u6c7d\u8f66\u7ad9)
p79
sg6
I79
sg7
I2
ssI81
(dp80
g3
I0
sg4
V997(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u4ea6\u5e84\u5de5\u4e1a\u56ed\u533a)
p81
sg6
I81
sg7
I3
ssI83
(dp82
g3
I0
sg4
V\u8fd0\u901a118(\u7965\u9f99\u516c\u4ea4\u516c\u53f8-\u897f\u4e09\u65d7)
p83
sg6
I83
sg7
I7
ssI85
(dp84
g3
I0
sg4
V901\u5feb(\u524d\u95e8\u897f-\u71d5\u5316\u4e1c\u5cad)
p85
sg6
I85
sg7
I10
ssI87
(dp86
g3
I0
sg4
V116(\u57ce\u94c1\u67f3\u82b3\u7ad9-\u9f99\u6f6d\u516c\u56ed)
p87
sg6
I87
sg7
I21
ssI89
(dp88
g3
I0
sg4
V806(\u5927\u5317\u7a91\u5357-\u592a\u7389\u56ed\u603b\u7ad9)
p89
sg6
I89
sg7
I2
ssI91
(dp90
g3
I0
sg4
V952(\u6c34\u58a8\u6797\u6eaa\u516c\u4ea4\u573a\u7ad9-\u4e1c\u57e0\u5934\u6751)
p91
sg6
I91
sg7
I2
ssI93
(dp92
g3
I1
sg7
I13
sg6
I93
ssI95
(dp93
g3
I0
sg4
V972(\u516b\u5927\u5904\u516c\u56ed-\u4e1c\u534e\u8def)
p94
sg6
I95
sg7
I21
ssI97
(dp95
g3
I0
sg4
V\u8fd0\u901a104(\u91d1\u5e84-\u6765\u5e7f\u8425\u5317)
p96
sg6
I97
sg7
I7
ssI99
(dp97
g3
I0
sg4
V802(\u7ed3\u7814\u6240-\u67f4\u5382\u5c6f\u9547)
p98
sg6
I99
sg7
I2
ssI101
(dp99
g3
I0
sg4
V641(\u6d77\u6dc0\u6865\u4e1c-\u91d1\u76cf\u6751)
p100
sg6
I101
sg7
I2
ssI103
(dp101
g3
I0
sg4
V972(\u4e1c\u534e\u8def-\u516b\u5927\u5904\u516c\u56ed)
p102
sg6
I103
sg7
I21
ssI105
(dp103
g3
I0
sg4
V870(\u5174\u5bff\u516c\u4ea4\u573a\u7ad9-\u5357\u53e3\u897f\u7ad9)
p104
sg6
I105
sg7
I21
ssI107
(dp105
g3
I0
sg4
V815(\u8bf8\u845b\u5e97-\u90ce\u5bb6\u56ed)
p106
sg6
I107
sg7
I2
ssI109
(dp107
g3
I0
sg4
V852(\u5e73\u8c37\u6c7d\u8f66\u7ad9-\u4e1c\u76f4\u95e8\u67a2\u7ebd\u7ad9)
p108
sg6
I109
sg7
I16
ssI111
(dp109
g3
I0
sg4
V844(\u5357\u793c\u58eb\u8def-\u793c\u8d24)
p110
sg6
I111
sg7
I16
ssI113
(dp111
g3
I0
sg4
V\u8fd0\u901a105(\u4e0a\u5730\u4e94\u8857\u4e1c\u53e3-\u4e2d\u82d1\u5bbe\u9986)
p112
sg6
I113
sg7
I25
ssI115
(dp113
g3
I0
sg4
V805(\u5317\u4eac\u7ad9\u4e1c-\u5eca\u574a)
p114
sg6
I115
sg7
I21
ssI117
(dp115
g3
I0
sg4
V\u8fd0\u901a117(\u53f2\u5404\u5e84-\u6765\u5e7f\u8425\u5317)
p116
sg6
I117
sg7
I16
ssI119
(dp117
g3
I1
sg7
I10
sg6
I119
ssI121
(dp118
g3
I0
sg4
V\u8fd0\u901a120(\u5434\u5e84-\u9996\u79d1\u82b1\u56ed\u5357\u95e8)
p119
sg6
I121
sg7
I25
ssI123
(dp120
g3
I0
sg4
V2(\u6d77\u6237\u5c6f-\u5bbd\u8857\u8def\u53e3\u5357)
p121
sg6
I123
sg7
I25
ssI125
(dp122
g3
I0
sg4
V2(\u5bbd\u8857\u8def\u53e3\u5357-\u6d77\u6237\u5c6f)
p123
sg6
I125
sg7
I25
ssI127
(dp124
g3
I0
sg4
V\u8fd0\u901a122(\u519c\u4e1a\u5c55\u89c8\u9986-\u534e\u7eba\u6613\u57ce\u516c\u4ea4\u573a\u7ad9)
p125
sg6
I127
sg7
I25
ssI129
(dp126
g3
I0
sg4
V850\u5feb(\u9a6c\u5761-\u4e1c\u76f4\u95e8\u5916)
p127
sg6
I129
sg7
I7
ssI131
(dp128
g3
I0
sg4
V\u8fd0\u901a119(\u65b0\u90fd\u4e1c\u7ad9-\u4e0a\u5730\u4e94\u8857\u4e1c\u53e3)
p129
sg6
I131
sg7
I21
ssI133
(dp130
g3
I0
sg4
V958(\u9f99\u6f6d\u516c\u56ed-\u516b\u5927\u5904\u516c\u56ed)
p131
sg6
I133
sg7
I16
ssI135
(dp132
g3
I0
sg4
V997(\u4ea6\u5e84\u5de5\u4e1a\u56ed\u533a-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p133
sg6
I135
sg7
I3
ssI137
(dp134
g3
I0
sg4
V300\u5feb\u5185(\u548c\u5e73\u4e1c\u6865-\u548c\u5e73\u4e1c\u6865)
p135
sg6
I137
sg7
I2
ssI139
(dp136
g3
I0
sg4
V\u8fd0\u901a102(\u9a6c\u5bb6\u5821\u8def\u5317\u53e3-\u7965\u9f99\u516c\u4ea4\u516c\u53f8)
p137
sg6
I139
sg7
I7
ssI141
(dp138
g3
I0
sg4
V873(\u5ef6\u5e86\u5357\u83dc\u56ed\u603b\u7ad9-\u6c38\u5b81\u8f66\u7ad9)
p139
sg6
I141
sg7
I21
ssI143
(dp140
g3
I0
sg4
V973(\u9ed1\u6865\u5357\u7ad9-\u5927\u74e6\u7a91\u6751)
p141
sg6
I143
sg7
I2
ssI145
(dp142
g3
I0
sg4
V44\u5916(\u65b0\u8857\u53e3\u8c41\u53e3-\u65b0\u8857\u53e3\u8c41\u53e3)
p143
sg6
I145
sg7
I25
ssI147
(dp144
g3
I0
sg4
V901(\u516d\u91cc\u6865\u5317\u91cc-\u71d5\u5316\u4e1c\u5cad)
p145
sg6
I147
sg7
I7
ssI149
(dp146
g3
I0
sg4
V958(\u516b\u5927\u5904\u516c\u56ed-\u9f99\u6f6d\u516c\u56ed)
p147
sg6
I149
sg7
I16
ssI151
(dp148
g3
I0
sg4
V806(\u592a\u7389\u56ed\u603b\u7ad9-\u5927\u5317\u7a91\u5357)
p149
sg6
I151
sg7
I2
ssI153
(dp150
g3
I0
sg4
V973(\u5927\u74e6\u7a91\u6751-\u9ed1\u6865\u5357\u7ad9)
p151
sg6
I153
sg7
I2
ssI155
(dp152
g3
I0
sg4
V835(\u5929\u6865-\u97e9\u6751\u6cb3\u897f)
p153
sg6
I155
sg7
I21
ssI157
(dp154
g3
I0
sg4
V801(\u5927\u5317\u7a91\u4e1c-\u67f4\u5382\u5c6f\u9547)
p155
sg6
I157
sg7
I2
ssI159
(dp156
g3
I0
sg4
V\u8fd0\u901a118(\u897f\u4e09\u65d7-\u7965\u9f99\u516c\u4ea4\u516c\u53f8)
p157
sg6
I159
sg7
I7
ssI161
(dp158
g3
I0
sg4
V\u8fd0\u901a107(\u5e7f\u987a\u5357\u5927\u8857\u5317\u53e3-\u9a6c\u5bb6\u5821\u8def\u5317\u53e3)
p159
sg6
I161
sg7
I21
ssI163
(dp160
g3
I0
sg4
V801(\u67f4\u5382\u5c6f\u9547-\u5927\u5317\u7a91\u4e1c)
p161
sg6
I163
sg7
I2
ssI165
(dp162
g3
I0
sg4
V\u8fd0\u901a101(\u5e7f\u987a\u5357\u5927\u8857\u5317\u53e3-\u84dd\u9f99\u5bb6\u56ed)
p163
sg6
I165
sg7
I21
ssI167
(dp164
g3
I1
sg7
I25
sg6
I167
ssI169
(dp165
g3
I1
sg7
I25
sg6
I169
ssI171
(dp166
g3
I0
sg4
V938(\u5317\u4eac\u7ad9\u4e1c-\u5929\u4e0b\u7b2c\u4e00\u57ce)
p167
sg6
I171
sg7
I10
ssI173
(dp168
g3
I0
sg4
V942\u5feb(\u8336\u575e\u706b\u8f66\u7ad9-\u4e1c\u76f4\u95e8\u5916)
p169
sg6
I173
sg7
I16
ssI175
(dp170
g3
I0
sg4
V370(\u95e8\u5934\u6c9f\u5708\u95e8-\u516c\u4e3b\u575f\u897f)
p171
sg6
I175
sg7
I2
ssI177
(dp172
g3
I0
sg4
V456(\u961c\u6210\u95e8\u5185-\u6c47\u6e90\u8def\u516c\u4ea4\u7ad9)
p173
sg6
I177
sg7
I7
ssI179
(dp174
g3
I0
sg4
V945(\u6c99\u6cb3-\u987a\u4e49\u5357\u5f69\u6c7d\u8f66\u7ad9)
p175
sg6
I179
sg7
I21
ssI181
(dp176
g3
I0
sg4
V\u8fd0\u901a122(\u534e\u7eba\u6613\u57ce\u516c\u4ea4\u573a\u7ad9-\u519c\u4e1a\u5c55\u89c8\u9986)
p177
sg6
I181
sg7
I25
ssI183
(dp178
g3
I0
sg4
V817(\u5927\u5382-\u90ce\u5bb6\u56ed)
p179
sg6
I183
sg7
I2
ssI185
(dp180
g3
I0
sg4
V815(\u516b\u738b\u575f\u4e1c-\u8bf8\u845b\u5e97)
p181
sg6
I185
sg7
I2
ssI187
(dp182
g3
I0
sg4
V300\u5916(\u5341\u91cc\u6cb3\u6865\u5317-\u5341\u91cc\u6cb3\u6865)
p183
sg6
I187
sg7
I2
ssI189
(dp184
g3
I0
sg4
V848(\u9a6c\u7538\u6865\u897f-\u6d77\u5b50\u89d2\uff08\u7eff\u8272\u5e84\u56ed\uff09)
p185
sg6
I189
sg7
I2
ssI191
(dp186
g3
I1
sg7
I25
sg6
I191
ssI193
(dp187
g3
I0
sg4
V\u8fd0\u901a102(\u7965\u9f99\u516c\u4ea4\u516c\u53f8-\u9a6c\u5bb6\u5821\u8def\u5317\u53e3)
p188
sg6
I193
sg7
I16
ssI195
(dp189
g3
I0
sg4
V511(\u57ce\u5357\u5609\u56ed-\u65b9\u5e84\u4e1c\u8def)
p190
sg6
I195
sg7
I25
ssI197
(dp191
g3
I0
sg4
V\u8fd0\u901a125(\u9a6c\u5bb6\u5821\u8def\u5317\u53e3-\u9a6c\u5bb6\u5821\u8def\u5317\u53e3)
p192
sg6
I197
sg7
I25
ssI199
(dp193
g3
I1
sg7
I23
sg6
I199
ssI201
(dp194
g3
I0
sg4
V\u8fd0\u901a114(\u5434\u5e84-\u53f2\u5404\u5e84)
p195
sg6
I201
sg7
I21
ssI203
(dp196
g3
I0
sg4
V\u8fd0\u901a116(\u82f9\u679c\u56ed\u5357\u8def\u4e1c\u53e3-\u84dd\u9f99\u5bb6\u56ed)
p197
sg6
I203
sg7
I25
ssI205
(dp198
g3
I0
sg4
V924(\u987a\u4e49\u5357\u5f69-\u571f\u6865\u6751)
p199
sg6
I205
sg7
I7
ssI207
(dp200
g3
I0
sg4
V\u8fd0\u901a108(\u4e0a\u5730\u516d\u8857\u4e1c\u53e3-\u82cf\u5dde\u6865)
p201
sg6
I207
sg7
I16
ssI209
(dp202
g3
I0
sg4
V466(\u4e2d\u5173\u6751\u5357-\u5317\u82d1\u5bb6\u56ed)
p203
sg6
I209
sg7
I39
ssI211
(dp204
g3
I0
sg4
V961(\u4e09\u5bb6\u5e97\u706b\u8f66\u7ad9-\u5927\u74e6\u7a91\u6751)
p205
sg6
I211
sg7
I2
ssI213
(dp206
g3
I1
sg7
I23
sg6
I213
ssI215
(dp207
g3
I0
sg4
V945(\u987a\u4e49\u5357\u5f69\u6c7d\u8f66\u7ad9-\u6c99\u6cb3)
p208
sg6
I215
sg7
I21
ssI217
(dp209
g3
I0
sg4
V\u8fd0\u901a101(\u84dd\u9f99\u5bb6\u56ed-\u5e7f\u987a\u5357\u5927\u8857\u5317\u53e3)
p210
sg6
I217
sg7
I21
ssI219
(dp211
g3
I0
sg4
V456(\u6c47\u6e90\u8def\u516c\u4ea4\u7ad9-\u961c\u6210\u95e8\u5185)
p212
sg6
I219
sg7
I7
ssI221
(dp213
g3
I0
sg4
V\u8fd0\u901a108(\u82cf\u5dde\u6865-\u4e0a\u5730\u516d\u8857\u4e1c\u53e3)
p214
sg6
I221
sg7
I16
ssI223
(dp215
g3
I0
sg4
V\u8fd0\u901a111(\u6765\u5e7f\u8425\u5317-\u8c46\u5404\u5e84\u4e61)
p216
sg6
I223
sg7
I16
ssI225
(dp217
g3
I0
sg4
V944(\u83dc\u6237\u8425\u6865\u897f-\u5976\u5b50\u623f)
p218
sg6
I225
sg7
I2
ssI227
(dp219
g3
I0
sg4
V300\u5feb\u5916(\u5927\u949f\u5bfa-\u5927\u949f\u5bfa)
p220
sg6
I227
sg7
I2
ssI229
(dp221
g3
I0
sg4
V988\u5357\u6bb5(\u9a6c\u6cc9\u8425-\u83dc\u6237\u8425\u6865\u897f)
p222
sg6
I229
sg7
I2
ssI231
(dp223
g3
I0
sg4
V\u8fd0\u901a109(\u91d1\u5e84-\u897f\u4e09\u65d7)
p224
sg6
I231
sg7
I25
ssI233
(dp225
g3
I1
sg7
I13
sg6
I233
ssI235
(dp226
g3
I0
sg4
V870(\u5357\u53e3\u897f\u7ad9-\u5174\u5bff\u516c\u4ea4\u573a\u7ad9)
p227
sg6
I235
sg7
I21
ssI237
(dp228
g3
I0
sg4
V26(\u897f\u4fbf\u95e8-\u4e8c\u91cc\u5e84)
p229
sg6
I237
sg7
I25
ssI239
(dp230
g3
I0
sg4
V\u8fd0\u901a111(\u8c46\u5404\u5e84\u4e61-\u6765\u5e7f\u8425\u5317)
p231
sg6
I239
sg7
I16
ssI241
(dp232
g3
I0
sg4
V44\u5185(\u5317\u5b98\u5385-\u5317\u5b98\u5385)
p233
sg6
I241
sg7
I25
ssI243
(dp234
g3
I0
sg4
V414(\u67f3\u6751-\u5730\u94c1\u6d77\u6dc0\u4e94\u8def\u5c45\u7ad9)
p235
sg6
I243
sg7
I25
ssI245
(dp236
g3
I0
sg4
V930\u4e09\u6cb3(\u4e09\u6cb3\u603b\u7ad9-\u90ce\u5bb6\u56ed\uff08\u4e3b\uff09)
p237
sg6
I245
sg7
I16
ssI247
(dp238
g3
I0
sg4
V\u8fd0\u901a123(\u4e0a\u5730\u4e94\u8857\u4e1c\u53e3-\u6c38\u4e30\u4e2d\u8def)
p239
sg6
I247
sg7
I25
ssI249
(dp240
g3
I0
sg4
V802(\u67f4\u5382\u5c6f\u9547-\u7ed3\u7814\u6240)
p241
sg6
I249
sg7
I2
ssI251
(dp242
g3
I0
sg4
V\u8fd0\u901a117(\u6765\u5e7f\u8425\u5317-\u53f2\u5404\u5e84)
p243
sg6
I251
sg7
I16
ssI253
(dp244
g3
I0
sg4
V835(\u97e9\u6751\u6cb3\u897f-\u5929\u6865)
p245
sg6
I253
sg7
I21
ssI255
(dp246
g3
I0
sg4
V511(\u65b9\u5e84\u4e1c\u8def-\u57ce\u5357\u5609\u56ed)
p247
sg6
I255
sg7
I25
ssI257
(dp248
g3
I0
sg4
V927(\u5218\u5e84-\u6728\u6a28\u56ed\u6865\u4e1c)
p249
sg6
I257
sg7
I21
ssI259
(dp250
g3
I0
sg4
V938(\u5929\u4e0b\u7b2c\u4e00\u57ce-\u5317\u4eac\u7ad9\u4e1c)
p251
sg6
I259
sg7
I10
ssI261
(dp252
g3
I0
sg4
V\u8fd0\u901a115(\u535a\u5174\u4e00\u8def\u5317\u53e3-\u91d1\u5e84)
p253
sg6
I261
sg7
I16
ssI263
(dp254
g3
I0
sg4
V\u8fd0\u901a106(\u7530\u6751\u5317\u8def-\u4e2d\u592e\u515a\u6821\u5317\u95e8)
p255
sg6
I263
sg7
I7
ssI265
(dp256
g3
I0
sg4
V924(\u571f\u6865\u6751-\u987a\u4e49\u5357\u5f69)
p257
sg6
I265
sg7
I7
ssI267
(dp258
g3
I0
sg4
V\u8fd0\u901a110(\u7965\u9f99\u516c\u4ea4\u516c\u53f8-\u6765\u5e7f\u8425\u5317)
p259
sg6
I267
sg7
I21
ssI269
(dp260
g3
I0
sg4
V957(\u5927\u5174\u4e00\u804c-\u5317\u4eac\u7ad9\u4e1c)
p261
sg6
I269
sg7
I16
ssI271
(dp262
g3
I0
sg4
V951(\u5768\u91cc-\u5730\u94c1\u516b\u5b9d\u5c71\u7ad9)
p263
sg6
I271
sg7
I10
ssI273
(dp264
g3
I1
sg7
I25
sg6
I273
ssI275
(dp265
g3
I0
sg4
V844(\u793c\u8d24-\u5357\u793c\u58eb\u8def)
p266
sg6
I275
sg7
I16
ssI277
(dp267
g3
I0
sg4
V820(\u5927\u5730\u7ad9-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p268
sg6
I277
sg7
I2
ssI279
(dp269
g3
I0
sg4
V940(\u4e3d\u56ed\u8def\u516c\u4ea4\u7ad9-\u51e4\u6cb3\u8425)
p270
sg6
I279
sg7
I7
ssI281
(dp271
g3
I0
sg4
V873(\u6c38\u5b81\u8f66\u7ad9-\u5ef6\u5e86\u5357\u83dc\u56ed\u603b\u7ad9)
p272
sg6
I281
sg7
I21
ssI283
(dp273
g3
I0
sg4
V\u8fd0\u901a107(\u9a6c\u5bb6\u5821\u8def\u5317\u53e3-\u5e7f\u987a\u5357\u5927\u8857\u5317\u53e3)
p274
sg6
I283
sg7
I21
ssI285
(dp275
g3
I0
sg4
V957(\u5317\u4eac\u7ad9\u4e1c-\u5927\u5174\u4e00\u804c)
p276
sg6
I285
sg7
I16
ssI287
(dp277
g3
I0
sg4
V835\u5feb(\u5929\u6865-\u97e9\u6751\u6cb3\u897f)
p278
sg6
I287
sg7
I21
ssI289
(dp279
g3
I0
sg4
V\u8fd0\u901a103(\u897f\u4e09\u65d7-\u5927\u7ea2\u95e8\u670d\u88c5\u57ce)
p280
sg6
I289
sg7
I2
ssI291
(dp281
g3
I0
sg4
V849(\u56fa\u5b89\u897f\u7ad9-\u6c38\u5b9a\u95e8\u957f\u9014\u6c7d\u8f66\u7ad9)
p282
sg6
I291
sg7
I2
ssI293
(dp283
g3
I0
sg4
V967(\u82b1\u56ed\u6865\u5357-\u9e3f\u76ca\u9a7e\u6821)
p284
sg6
I293
sg7
I2
ssI295
(dp285
g3
I0
sg4
V\u8fd0\u901a119(\u4e0a\u5730\u4e94\u8857\u4e1c\u53e3-\u65b0\u90fd\u4e1c\u7ad9)
p286
sg6
I295
sg7
I21
ssI297
(dp287
g3
I0
sg4
V\u8fd0\u901a120(\u9996\u79d1\u82b1\u56ed\u5357\u95e8-\u5434\u5e84)
p288
sg6
I297
sg7
I25
ssI299
(dp289
g3
I1
sg7
I10
sg6
I299
ssI301
(dp290
g3
I0
sg4
V930\u4e09\u6cb3(\u90ce\u5bb6\u56ed\uff08\u4e3b\uff09-\u4e09\u6cb3\u603b\u7ad9)
p291
sg6
I301
sg7
I16
ssI303
(dp292
g3
I0
sg4
V998(\u5927\u5317\u7a91\u5357-\u4e30\u53f0\u897f\u7ad9)
p293
sg6
I303
sg7
I2
ssI305
(dp294
g3
I1
sg7
I25
sg6
I305
ssI307
(dp295
g3
I0
sg4
V\u8fd0\u901a106(\u4e2d\u592e\u515a\u6821\u5317\u95e8-\u7530\u6751\u5317\u8def)
p296
sg6
I307
sg7
I7
ssI309
(dp297
g3
I1
sg7
I8
sg6
I309
ssI311
(dp298
g3
I1
sg7
I8
sg6
I311
ssI313
(dp299
g3
I0
sg4
V814(\u71d5\u90ca\u4e0a\u4e0a\u57ce\u4e94\u671f-\u5927\u5317\u7a91\u5357)
p300
sg6
I313
sg7
I2
ssI315
(dp301
g3
I0
sg4
V821(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u5c0f\u5468\u6613\u6751)
p302
sg6
I315
sg7
I2
ssI317
(dp303
g3
I0
sg4
V\u8fd0\u901a121(\u534e\u7eba\u6613\u57ce\u516c\u4ea4\u573a\u7ad9-\u516b\u738b\u575f\u4e1c)
p304
sg6
I317
sg7
I25
ssI319
(dp305
g3
I0
sg4
V968(\u6d77\u5b50\u89d2-\u7ecf\u6d4e\u9002\u7528\u623f)
p306
sg6
I319
sg7
I16
ssI321
(dp307
g3
I0
sg4
V\u8fd0\u901a109(\u897f\u4e09\u65d7-\u91d1\u5e84)
p308
sg6
I321
sg7
I25
ssI323
(dp309
g3
I0
sg4
V\u8fd0\u901a114(\u53f2\u5404\u5e84-\u5434\u5e84)
p310
sg6
I323
sg7
I21
ssI325
(dp311
g3
I0
sg4
V982(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u571f\u4e95\u6751\u897f\u53e3)
p312
sg6
I325
sg7
I21
ssI327
(dp313
g3
I0
sg4
V919\u5feb(\u4eac\u5f20\u8def\u53e3\u5317-\u5fb7\u80dc\u95e8)
p314
sg6
I327
sg7
I25
ssI329
(dp315
g3
I1
sg7
I23
sg6
I329
ssI331
(dp316
g3
I0
sg4
V919(\u5fb7\u80dc\u95e8-\u4f53\u80b2\u573a\u5c0f\u533a)
p317
sg6
I331
sg7
I21
ssI333
(dp318
g3
I0
sg4
V370(\u516c\u4e3b\u575f\u897f-\u95e8\u5934\u6c9f\u5708\u95e8)
p319
sg6
I333
sg7
I2
ssI335
(dp320
g3
I0
sg4
V42(\u5e7f\u5916\u7518\u77f3\u6865-\u4e1c\u56db\u5341\u6761\u6865)
p321
sg6
I335
sg7
I25
ssI337
(dp322
g3
I0
sg4
V414(\u5730\u94c1\u6d77\u6dc0\u4e94\u8def\u5c45\u7ad9-\u67f3\u6751)
p323
sg6
I337
sg7
I25
ssI339
(dp324
g3
I0
sg4
V817(\u90ce\u5bb6\u56ed-\u5927\u5382)
p325
sg6
I339
sg7
I2
ssI341
(dp326
g3
I1
sg7
I10
sg6
I341
ssI343
(dp327
g3
I0
sg4
V\u8fd0\u901a103(\u5927\u7ea2\u95e8\u670d\u88c5\u57ce-\u897f\u4e09\u65d7)
p328
sg6
I343
sg7
I2
ssI345
(dp329
g3
I0
sg4
V927(\u6728\u6a28\u56ed\u6865\u4e1c-\u5218\u5e84)
p330
sg6
I345
sg7
I21
ssI347
(dp331
g3
I0
sg4
V967(\u9e3f\u76ca\u9a7e\u6821-\u82b1\u56ed\u6865\u5357)
p332
sg6
I347
sg7
I2
ssI349
(dp333
g3
I0
sg4
V915(\u987a\u4e49\u5357\u5f69\u6c7d\u8f66\u7ad9-\u4e1c\u76f4\u95e8\u5916)
p334
sg6
I349
sg7
I21
ssI351
(dp335
g3
I0
sg4
V821(\u5c0f\u5468\u6613\u6751-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p336
sg6
I351
sg7
I2
ssI353
(dp337
g3
I0
sg4
V\u8fd0\u901a124(\u91d1\u5e84-\u53a2\u767d\u65d7\u6865)
p338
sg6
I353
sg7
I25
ssI355
(dp339
g3
I0
sg4
V\u8fd0\u901a124(\u53a2\u767d\u65d7\u6865-\u91d1\u5e84)
p340
sg6
I355
sg7
I25
ssI357
(dp341
g3
I0
sg4
V982(\u571f\u4e95\u6751\u897f\u53e3-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p342
sg6
I357
sg7
I21
ssI359
(dp343
g3
I0
sg4
V952(\u4e1c\u57e0\u5934\u6751-\u6c34\u58a8\u6797\u6eaa\u516c\u4ea4\u573a\u7ad9)
p344
sg6
I359
sg7
I2
ssI361
(dp345
g3
I0
sg4
V\u8fd0\u901a121(\u516b\u738b\u575f\u4e1c-\u534e\u7eba\u6613\u57ce\u516c\u4ea4\u573a\u7ad9)
p346
sg6
I361
sg7
I25
ssI363
(dp347
g3
I0
sg4
V968(\u7ecf\u6d4e\u9002\u7528\u623f-\u6d77\u5b50\u89d2)
p348
sg6
I363
sg7
I16
ssI365
(dp349
g3
I0
sg4
V849(\u6c38\u5b9a\u95e8\u957f\u9014\u6c7d\u8f66\u7ad9-\u56fa\u5b89\u897f\u7ad9)
p350
sg6
I365
sg7
I2
ssI367
(dp351
g3
I0
sg4
V\u8fd0\u901a113(\u5434\u5e84-\u6765\u5e7f\u8425\u5317)
p352
sg6
I367
sg7
I2
ssI369
(dp353
g3
I0
sg4
V\u8fd0\u901a105(\u4e2d\u82d1\u5bbe\u9986-\u4e0a\u5730\u4e94\u8857\u4e1c\u53e3)
p354
sg6
I369
sg7
I25
ssI371
(dp355
g3
I1
sg7
I10
sg6
I371
ssI373
(dp356
g3
I0
sg4
V848(\u6d77\u5b50\u89d2\uff08\u7eff\u8272\u5e84\u56ed\uff09-\u9a6c\u7538\u6865\u897f)
p357
sg6
I373
sg7
I2
ssI375
(dp358
g3
I0
sg4
V\u8fd0\u901a112(\u53f2\u5404\u5e84-\u84dd\u9f99\u5bb6\u56ed)
p359
sg6
I375
sg7
I21
ssI377
(dp360
g3
I0
sg4
V\u8fd0\u901a116(\u84dd\u9f99\u5bb6\u56ed-\u82f9\u679c\u56ed\u5357\u8def\u4e1c\u53e3)
p361
sg6
I377
sg7
I25
ssI379
(dp362
g3
I1
sg7
I10
sg6
I379
ssI381
(dp363
g3
I0
sg4
V944(\u5976\u5b50\u623f-\u83dc\u6237\u8425\u6865\u897f)
p364
sg6
I381
sg7
I2
ssI383
(dp365
g3
I0
sg4
V\u8fd0\u901a201(\u516d\u91cc\u6865\u957f\u9014\u7ad9-\u6765\u5e7f\u8425\u5317)
p366
sg6
I383
sg7
I2
ssI385
(dp367
g3
I0
sg4
V814(\u5927\u5317\u7a91\u5357-\u71d5\u90ca\u4e0a\u4e0a\u57ce\u4e94\u671f)
p368
sg6
I385
sg7
I2
ssI387
(dp369
g3
I0
sg4
V805(\u5eca\u574a-\u5317\u4eac\u7ad9\u4e1c)
p370
sg6
I387
sg7
I21
ssI389
(dp371
g3
I0
sg4
V920(\u4e0b\u8425-\u59ab\u6c34\u5317\u8857\u5357)
p372
sg6
I389
sg7
I21
ssI391
(dp373
g3
I0
sg4
V876(\u5ef6\u5e86\u706b\u8f66\u7ad9\u5317\u5e7f\u573a-\u5eb7\u5e84\u5c0f\u533a)
p374
sg6
I391
sg7
I21
ssI393
(dp375
g3
I0
sg4
V921\uff08\u5ef6\u5e86\u5730\u533a\uff09(\u5eb7\u5e84\u5c0f\u533a-\u5ef6\u5e86\u706b\u8f66\u7ad9\u5317\u5e7f\u573a)
p376
sg6
I393
sg7
I3
ssI395
(dp377
g3
I0
sg4
V811(\u516b\u738b\u575f\u897f-\u71d5\u90ca\u51b6\u91d1\u4e00\u5c40)
p378
sg6
I395
sg7
I3
ssI397
(dp379
g3
I0
sg4
V876(\u5eb7\u5e84\u5c0f\u533a-\u5ef6\u5e86\u706b\u8f66\u7ad9\u5317\u5e7f\u573a)
p380
sg6
I397
sg7
I21
ssI399
(dp381
g3
I0
sg4
V874\uff08\u5ef6\u5e86\u5730\u533a\uff09(\u6c38\u5b81\u5357\u5173-\u5ddd\u5317\u5c0f\u533a\u5357\u95e8)
p382
sg6
I399
sg7
I3
ssI401
(dp383
g3
I0
sg4
V810(\u9999\u6cb3\u603b\u7ad9-\u5927\u5317\u7a91\u4e1c)
p384
sg6
I401
sg7
I3
ssI403
(dp385
g3
I0
sg4
V855(\u4e1c\u76f4\u95e8\u5916-\u9a6c\u5761\u82b1\u56ed)
p386
sg6
I403
sg7
I3
ssI405
(dp387
g3
I0
sg4
V804(\u6768\u6d3c-\u5317\u4eac\u7ad9\u4e1c)
p388
sg6
I405
sg7
I16
ssI407
(dp389
g3
I0
sg4
V886(\u660c\u5e73\u4e1c\u5173-\u5fb7\u80dc\u95e8\u897f)
p390
sg6
I407
sg7
I25
ssI409
(dp391
g3
I0
sg4
V921\uff08\u5ef6\u5e86\u5730\u533a\uff09(\u5ef6\u5e86\u706b\u8f66\u7ad9\u5317\u5e7f\u573a-\u5eb7\u5e84\u5c0f\u533a)
p392
sg6
I409
sg7
I3
ssI411
(dp393
g3
I0
sg4
V804(\u5317\u4eac\u7ad9\u524d\u8857-\u6768\u6d3c)
p394
sg6
I411
sg7
I3
ssI413
(dp395
g3
I0
sg4
V807(\u571f\u6865\u6751-\u5927\u5317\u7a91\u5357)
p396
sg6
I413
sg7
I16
ssI415
(dp397
g3
I0
sg4
V855(\u9a6c\u5761\u82b1\u56ed-\u4e1c\u76f4\u95e8\u5916)
p398
sg6
I415
sg7
I3
ssI417
(dp399
g3
I0
sg4
V810(\u5927\u5317\u7a91\u5357-\u9999\u6cb3\u603b\u7ad9)
p400
sg6
I417
sg7
I3
ssI419
(dp401
g3
I0
sg4
V886(\u5fb7\u80dc\u95e8\u897f-\u660c\u5e73\u4e1c\u5173)
p402
sg6
I419
sg7
I25
ssI421
(dp403
g3
I0
sg4
V808(\u5927\u5317\u7a91\u5357-\u4f70\u5bcc\u82d1)
p404
sg6
I421
sg7
I21
ssI423
(dp405
g3
I0
sg4
V875(\u59ab\u6c34\u5317\u8857\u5357-\u6c38\u5b81\u8f66\u7ad9)
p406
sg6
I423
sg7
I21
ssI425
(dp407
g3
I0
sg4
V811(\u71d5\u90ca\u51b6\u91d1\u4e00\u5c40-\u516b\u738b\u575f\u897f)
p408
sg6
I425
sg7
I3
ssI427
(dp409
g3
I0
sg4
V818(\u5929\u6d0b\u57ce\u603b\u7ad9-\u5927\u5317\u7a91\u5357)
p410
sg6
I427
sg7
I21
ssI429
(dp411
g3
I0
sg4
V851(\u57ce\u94c1\u671b\u4eac\u897f\u7ad9-\u9ed1\u6865\u5357\u7ad9)
p412
sg6
I429
sg7
I27
ssI431
(dp413
g3
I0
sg4
V816(\u5927\u5382-\u90ce\u5bb6\u56ed)
p414
sg6
I431
sg7
I3
ssI433
(dp415
g3
I0
sg4
V818(\u90ce\u5bb6\u56ed-\u5929\u6d0b\u57ce\u603b\u7ad9)
p416
sg6
I433
sg7
I21
ssI435
(dp417
g3
I0
sg4
V808(\u4f70\u5bcc\u82d1-\u5927\u5317\u7a91\u5357)
p418
sg6
I435
sg7
I21
ssI437
(dp419
g3
I0
sg4
V874\uff08\u5ef6\u5e86\u5730\u533a\uff09(\u5ddd\u5317\u5c0f\u533a\u5357\u95e8-\u6c38\u5b81\u5357\u5173)
p420
sg6
I437
sg7
I3
ssI439
(dp421
g3
I0
sg4
V851(\u9ed1\u6865\u5357\u7ad9-\u57ce\u94c1\u671b\u4eac\u897f\u7ad9)
p422
sg6
I439
sg7
I27
ssI441
(dp423
g3
I0
sg4
V875(\u6c38\u5b81\u8f66\u7ad9-\u59ab\u6c34\u5317\u8857\u5357)
p424
sg6
I441
sg7
I21
ssI443
(dp425
g3
I0
sg4
V816(\u90ce\u5bb6\u56ed-\u5927\u5382)
p426
sg6
I443
sg7
I3
ssI445
(dp427
g3
I0
sg4
V920(\u59ab\u6c34\u5317\u8857\u5357-\u4e0b\u8425)
p428
sg6
I445
sg7
I21
ssI447
(dp429
g3
I0
sg4
V807(\u5927\u5317\u7a91\u5357-\u571f\u6865\u6751)
p430
sg6
I447
sg7
I10
ssI449
(dp431
g3
I1
sg7
I23
sg6
I449
ssI451
(dp432
g3
I1
sg7
I23
sg6
I451
ssI453
(dp433
g3
I0
sg4
V913(\u6c99\u5b50\u8425\u6c7d\u8f66\u7ad9-\u6d77\u6dc0\u6865\u4e1c)
p434
sg6
I453
sg7
I25
ssI455
(dp435
g3
I0
sg4
V913(\u6d77\u6dc0\u6865\u4e1c-\u6c99\u5b50\u8425\u6c7d\u8f66\u7ad9)
p436
sg6
I455
sg7
I16
ssI457
(dp437
g3
I0
sg4
V986(\u5927\u5730\u7ad9-\u6c38\u5b9a\u95e8\u957f\u9014\u6c7d\u8f66\u7ad9)
p438
sg6
I457
sg7
I9
ssI459
(dp439
g3
I0
sg4
V938\u9999\u6cb3\u5feb(\u9999\u6cb3\u603b\u7ad9-\u5317\u4eac\u7ad9\u4e1c)
p440
sg6
I459
sg7
I21
ssI461
(dp441
g3
I0
sg4
V926(\u540e\u752b-\u6c38\u5b9a\u95e8\u5185)
p442
sg6
I461
sg7
I9
ssI463
(dp443
g3
I0
sg4
V941\u5feb(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u4e2d\u95e8\u5bfa\u751f\u6001\u56ed)
p444
sg6
I463
sg7
I9
ssI465
(dp445
g3
I0
sg4
V942(\u4e1c\u76f4\u95e8\u5916-\u8336\u575e\u706b\u8f66\u7ad9)
p446
sg6
I465
sg7
I21
ssI467
(dp447
g3
I0
sg4
V954(\u5927\u5317\u7a91\u5357-\u5927\u5174\u4e00\u804c)
p448
sg6
I467
sg7
I9
ssI469
(dp449
g3
I0
sg4
V926(\u6c38\u5b9a\u95e8\u5185-\u540e\u752b)
p450
sg6
I469
sg7
I9
ssI471
(dp451
g3
I0
sg4
V986(\u6c38\u5b9a\u95e8\u957f\u9014\u6c7d\u8f66\u7ad9-\u5927\u5730\u7ad9)
p452
sg6
I471
sg7
I9
ssI473
(dp453
g3
I0
sg4
V942(\u8336\u575e\u706b\u8f66\u7ad9-\u4e1c\u76f4\u95e8\u5916)
p454
sg6
I473
sg7
I21
ssI475
(dp455
g3
I0
sg4
V909(\u571f\u4e95\u6751\u897f\u53e3-\u957f\u5efa\u9a7e\u6821)
p456
sg6
I475
sg7
I9
ssI477
(dp457
g3
I0
sg4
V937(\u5357\u793c\u58eb\u8def-\u5927\u5174\u897f\u80e1\u6797)
p458
sg6
I477
sg7
I9
ssI479
(dp459
g3
I0
sg4
V992(\u897f\u8f9b\u623f-\u5df4\u6c9f\u6751)
p460
sg6
I479
sg7
I21
ssI481
(dp461
g3
I0
sg4
V938\u9999\u6cb3\u5feb(\u5317\u4eac\u7ad9\u4e1c-\u9999\u6cb3\u603b\u7ad9)
p462
sg6
I481
sg7
I21
ssI483
(dp463
g3
I0
sg4
V954(\u5927\u5174\u4e00\u804c-\u5927\u5317\u7a91\u5357)
p464
sg6
I483
sg7
I9
ssI485
(dp465
g3
I0
sg4
V937(\u5927\u5174\u897f\u80e1\u6797-\u5357\u793c\u58eb\u8def)
p466
sg6
I485
sg7
I9
ssI487
(dp467
g3
I0
sg4
V941\u5feb(\u4e2d\u95e8\u5bfa\u751f\u6001\u56ed-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p468
sg6
I487
sg7
I9
ssI489
(dp469
g3
I0
sg4
V909(\u957f\u5efa\u9a7e\u6821-\u571f\u4e95\u6751\u897f\u53e3)
p470
sg6
I489
sg7
I9
ssI491
(dp471
g3
I0
sg4
V992(\u5df4\u6c9f\u6751-\u897f\u8f9b\u623f)
p472
sg6
I491
sg7
I21
ssI493
(dp473
g3
I0
sg4
V989(\u56db\u60e0\u67a2\u7ebd\u7ad9-\u987a\u4e49\u534a\u58c1\u5e97)
p474
sg6
I493
sg7
I9
ssI495
(dp475
g3
I0
sg4
V989(\u987a\u4e49\u534a\u58c1\u5e97-\u56db\u60e0\u67a2\u7ebd\u7ad9)
p476
sg6
I495
sg7
I9
ssI497
(dp477
g3
I0
sg4
V939(\u575d\u6cb3-\u4e0a\u8f9b\u5821\u4fe1\u7528\u793e)
p478
sg6
I497
sg7
I10
ssI499
(dp479
g3
I1
sg7
I23
sg6
I499
ssI501
(dp480
g3
I0
sg4
V991(\u5b59\u6cb3\u516c\u4ea4\u573a\u7ad9-\u9752\u5e74\u8def\u53e3)
p481
sg6
I501
sg7
I16
ssI503
(dp482
g3
I0
sg4
V1(\u56db\u60e0\u67a2\u7ebd\u7ad9-\u8001\u5c71\u516c\u4ea4\u573a\u7ad9)
p483
sg6
I503
sg7
I35
ssI505
(dp484
g3
I0
sg4
V1(\u8001\u5c71\u516c\u4ea4\u573a\u7ad9-\u56db\u60e0\u67a2\u7ebd\u7ad9)
p485
sg6
I505
sg7
I35
ssI507
(dp486
g3
I1
sg7
I32
sg6
I507
ssI509
(dp487
g3
I1
sg7
I32
sg6
I509
ssI511
(dp488
g3
I0
sg4
V991(\u9752\u5e74\u8def\u53e3-\u5b59\u6cb3\u516c\u4ea4\u573a\u7ad9)
p489
sg6
I511
sg7
I16
ssI513
(dp490
g3
I1
sg7
I23
sg6
I513
ssI515
(dp491
g3
I0
sg4
V935\u5feb(\u4e1c\u76f4\u95e8-\u738b\u5bb6\u573a)
p492
sg6
I515
sg7
I16
ssI517
(dp493
g3
I0
sg4
V939(\u4e0a\u8f9b\u5821\u4fe1\u7528\u793e-\u575d\u6cb3)
p494
sg6
I517
sg7
I10
ssI519
(dp495
g3
I0
sg4
V935\u5feb(\u738b\u5bb6\u573a-\u4e1c\u76f4\u95e8)
p496
sg6
I519
sg7
I10
ssI521
(dp497
g3
I0
sg4
V347(\u65b0\u8857\u53e3\u8c41\u53e3-\u516b\u5927\u5904)
p498
sg6
I521
sg7
I25
ssI523
(dp499
g3
I0
sg4
V854(\u5b59\u6cb3\u516c\u4ea4\u573a\u7ad9-\u57ce\u94c1\u671b\u4eac\u897f\u7ad9)
p500
sg6
I523
sg7
I11
ssI525
(dp501
g3
I1
sg7
I25
sg6
I525
ssI527
(dp502
g3
I1
sg7
I38
sg6
I527
ssI529
(dp503
g3
I1
sg7
I25
sg6
I529
ssI531
(dp504
g3
I0
sg4
V103\u7535\u8f66(\u5317\u4eac\u7ad9\u897f-\u52a8\u7269\u56ed\uff08\u67a2\u7ebd\u7ad9\uff09)
p505
sg6
I531
sg7
I25
ssI533
(dp506
g3
I0
sg4
V960(\u77f3\u5382\u6751-\u897f\u8f9b\u623f)
p507
sg6
I533
sg7
I11
ssI535
(dp508
g3
I1
sg7
I25
sg6
I535
ssI537
(dp509
g3
I0
sg4
V48(\u57ce\u5357\u5609\u56ed\u5317-\u524d\u95e8)
p510
sg6
I537
sg7
I25
ssI539
(dp511
g3
I0
sg4
V7(\u4e94\u95f4\u697c-\u52a8\u7269\u56ed\uff08\u67a2\u7ebd\u7ad9\uff09)
p512
sg6
I539
sg7
I11
ssI541
(dp513
g3
I1
sg7
I23
sg6
I541
ssI543
(dp514
g3
I1
sg7
I25
sg6
I543
ssI545
(dp515
g3
I0
sg4
V103\u7535\u8f66(\u52a8\u7269\u56ed\uff08\u67a2\u7ebd\u7ad9\uff09-\u5317\u4eac\u7ad9\u897f)
p516
sg6
I545
sg7
I25
ssI547
(dp517
g3
I0
sg4
V16(\u897f\u76f4\u95e8\u5916-\u4e8c\u91cc\u5e84)
p518
sg6
I547
sg7
I35
ssI549
(dp519
g3
I1
sg7
I36
sg6
I549
ssI551
(dp520
g3
I0
sg4
V854(\u57ce\u94c1\u671b\u4eac\u897f\u7ad9-\u5b59\u6cb3\u516c\u4ea4\u573a\u7ad9)
p521
sg6
I551
sg7
I11
ssI553
(dp522
g3
I1
sg7
I38
sg6
I553
ssI555
(dp523
g3
I0
sg4
V16(\u4e8c\u91cc\u5e84-\u897f\u76f4\u95e8\u5916)
p524
sg6
I555
sg7
I35
ssI557
(dp525
g3
I0
sg4
V7(\u52a8\u7269\u56ed\uff08\u67a2\u7ebd\u7ad9\uff09-\u4e94\u95f4\u697c)
p526
sg6
I557
sg7
I11
ssI559
(dp527
g3
I0
sg4
V960(\u897f\u8f9b\u623f-\u77f3\u5382\u6751)
p528
sg6
I559
sg7
I11
ssI561
(dp529
g3
I0
sg4
V981(\u5e38\u9752\u56ed\u897f\u95e8-\u7d2b\u91d1\u8def\u5357\u53e3)
p530
sg6
I561
sg7
I11
ssI563
(dp531
g3
I1
sg7
I36
sg6
I563
ssI565
(dp532
g3
I0
sg4
V959(\u516c\u4ea4\u9a7e\u6821-\u77f3\u5382\u6751)
p533
sg6
I565
sg7
I11
ssI567
(dp534
g3
I0
sg4
V347(\u516b\u5927\u5904-\u65b0\u8857\u53e3\u8c41\u53e3)
p535
sg6
I567
sg7
I25
ssI569
(dp536
g3
I0
sg4
V981(\u7d2b\u91d1\u8def\u5357\u53e3-\u5e38\u9752\u56ed\u897f\u95e8)
p537
sg6
I569
sg7
I11
ssI571
(dp538
g3
I0
sg4
V959(\u77f3\u5382\u6751-\u516c\u4ea4\u9a7e\u6821)
p539
sg6
I571
sg7
I11
ssI573
(dp540
g3
I0
sg4
V48(\u524d\u95e8-\u57ce\u5357\u5609\u56ed\u5317)
p541
sg6
I573
sg7
I25
ssI575
(dp542
g3
I1
sg7
I23
sg6
I575
ssI577
(dp543
g3
I0
sg4
V\u8fd0\u901a205(\u57ce\u94c1\u4e0a\u5730\u7ad9-\u53f2\u5404\u5e84)
p544
sg6
I577
sg7
I12
ssI579
(dp545
g3
I0
sg4
V\u8fd0\u901a205(\u53f2\u5404\u5e84-\u57ce\u94c1\u4e0a\u5730\u7ad9)
p546
sg6
I579
sg7
I12
ssI581
(dp547
g3
I0
sg4
V888\u5feb(\u660c\u5e73\u4e1c\u5173-\u5fb7\u80dc\u95e8\u897f)
p548
sg6
I581
sg7
I25
ssI583
(dp549
g3
I0
sg4
V888\u5feb(\u5fb7\u80dc\u95e8\u897f-\u660c\u5e73\u4e1c\u5173)
p550
sg6
I583
sg7
I25
ssI585
(dp551
g3
I0
sg4
V983(\u4e1c\u7a91\u6751-\u738b\u4f50\u6c7d\u8f66\u7ad9)
p552
sg6
I585
sg7
I15
ssI587
(dp553
g3
I0
sg4
V33(\u8fdc\u5927\u8def\u4e1c\u53e3-\u516c\u4e3b\u575f\u897f)
p554
sg6
I587
sg7
I30
ssI589
(dp555
g3
I0
sg4
V413(\u5357\u5341\u91cc\u5c45-\u4e1c\u76f4\u95e8)
p556
sg6
I589
sg7
I25
ssI591
(dp557
g3
I0
sg4
V880\u5feb\u8f66[\u6dbf\u9e7f](\u5fb7\u80dc\u95e8-\u6dbf\u9e7f)
p558
sg6
I591
sg7
I14
ssI593
(dp559
g3
I0
sg4
V880\u5feb\u8f66[\u6dbf\u9e7f](\u6dbf\u9e7f-\u5fb7\u80dc\u95e8)
p560
sg6
I593
sg7
I14
ssI595
(dp561
g3
I1
sg7
I25
sg6
I595
ssI597
(dp562
g3
I1
sg7
I25
sg6
I597
ssI599
(dp563
g3
I0
sg4
V836\u533a\u95f4[\u5927\u97e9\u7ee7](\u5927\u97e9\u7ee7-\u5929\u6865\u6c7d\u8f66\u7ad9)
p564
sg6
I599
sg7
I14
ssI601
(dp565
g3
I0
sg4
V840(\u9a6c\u6751\u8f66\u7ad9-\u5357\u793c\u58eb\u8def)
p566
sg6
I601
sg7
I14
ssI603
(dp567
g3
I0
sg4
V843(\u5927\u7070\u5382\u897f\u7ad9-\u5357\u793c\u58eb\u8def)
p568
sg6
I603
sg7
I21
ssI605
(dp569
g3
I0
sg4
V843(\u5357\u793c\u58eb\u8def-\u5927\u7070\u5382\u897f\u7ad9)
p570
sg6
I605
sg7
I21
ssI607
(dp571
g3
I0
sg4
V33(\u516c\u4e3b\u575f\u897f-\u8fdc\u5927\u8def\u4e1c\u53e3)
p572
sg6
I607
sg7
I30
ssI609
(dp573
g3
I0
sg4
V413(\u4e1c\u76f4\u95e8-\u5357\u5341\u91cc\u5c45)
p574
sg6
I609
sg7
I25
ssI611
(dp575
g3
I0
sg4
V983(\u738b\u4f50\u6c7d\u8f66\u7ad9-\u4e1c\u7a91\u6751)
p576
sg6
I611
sg7
I15
ssI613
(dp577
g3
I0
sg4
V840(\u5357\u793c\u58eb\u8def-\u9a6c\u6751\u8f66\u7ad9)
p578
sg6
I613
sg7
I14
ssI615
(dp579
g3
I0
sg4
V888(\u87d2\u5c71\u56fd\u5bb6\u68ee\u6797\u516c\u56ed-\u5fb7\u80dc\u95e8\u897f)
p580
sg6
I615
sg7
I14
ssI617
(dp581
g3
I0
sg4
V836\u533a\u95f4[\u5927\u97e9\u7ee7](\u5929\u6865\u6c7d\u8f66\u7ad9-\u5927\u97e9\u7ee7)
p582
sg6
I617
sg7
I14
ssI619
(dp583
g3
I0
sg4
V888(\u5fb7\u80dc\u95e8\u897f-\u87d2\u5c71\u56fd\u5bb6\u68ee\u6797\u516c\u56ed)
p584
sg6
I619
sg7
I16
ssI621
(dp585
g3
I1
sg7
I38
sg6
I621
ssI623
(dp586
g3
I1
sg7
I29
sg6
I623
ssI625
(dp587
g3
I0
sg4
V970(\u5730\u94c1\u4ff8\u4f2f\u7ad9-\u5bc6\u4e91\u6c7d\u8f66\u7ad9)
p588
sg6
I625
sg7
I16
ssI627
(dp589
g3
I1
sg7
I31
sg6
I627
ssI629
(dp590
g3
I0
sg4
V916(\u6000\u67d4\u6c7d\u8f66\u7ad9-\u4e1c\u76f4\u95e8)
p591
sg6
I629
sg7
I16
ssI631
(dp592
g3
I0
sg4
V970\u5feb(\u5bc6\u4e91\u6c7d\u8f66\u7ad9-\u671b\u4eac\u897f\u7ad9)
p593
sg6
I631
sg7
I16
ssI633
(dp594
g3
I0
sg4
V673(\u5317\u4eac\u897f\u7ad9-\u77f3\u5404\u5e84)
p595
sg6
I633
sg7
I16
ssI635
(dp596
g3
I0
sg4
V669(\u5927\u5317\u7a91\u4e1c-\u4e07\u76db\u5317\u8857)
p597
sg6
I635
sg7
I16
ssI637
(dp598
g3
I1
sg7
I38
sg6
I637
ssI639
(dp599
g3
I0
sg4
V826(\u91c7\u56db\u5c0f\u533a-\u6c38\u5b9a\u95e8\u5185)
p600
sg6
I639
sg7
I16
ssI641
(dp601
g3
I1
sg7
I38
sg6
I641
ssI643
(dp602
g3
I1
sg7
I38
sg6
I643
ssI645
(dp603
g3
I0
sg4
V515(\u5730\u94c1\u5317\u571f\u57ce\u7ad9-\u4e1c\u5927\u6865\u8def\u53e3\u4e1c)
p604
sg6
I645
sg7
I25
ssI647
(dp605
g3
I0
sg4
V842(\u5927\u5174\u897f\u80e1\u6797-\u4ebf\u53d1\u5de5\u4e1a\u56ed\u533a)
p606
sg6
I647
sg7
I16
ssI649
(dp607
g3
I0
sg4
V866(\u4e1c\u76f4\u95e8-\u96c1\u6816\u5f00\u53d1\u533a\u6c7d\u8f66\u7ad9)
p608
sg6
I649
sg7
I21
ssI651
(dp609
g3
I1
sg7
I31
sg6
I651
ssI653
(dp610
g3
I0
sg4
V809(\u4f70\u5bcc\u82d1-\u5927\u5317\u7a91\u5357)
p611
sg6
I653
sg7
I16
ssI655
(dp612
g3
I1
sg7
I38
sg6
I655
ssI657
(dp613
g3
I0
sg4
V977(\u660e\u6625\u82d1-\u51af\u6751\u897f\u91cc)
p614
sg6
I657
sg7
I16
ssI659
(dp615
g3
I0
sg4
V977\u5feb(\u516c\u4e3b\u575f\u5317-\u51af\u897f\u897f\u91cc)
p616
sg6
I659
sg7
I16
ssI661
(dp617
g3
I0
sg4
V841(\u4e3d\u56ed\u8def\u516c\u4ea4\u7ad9-\u4f19\u8fbe\u8425\u6751)
p618
sg6
I661
sg7
I16
ssI663
(dp619
g3
I1
sg7
I29
sg6
I663
ssI665
(dp620
g3
I0
sg4
V826(\u6c38\u5b9a\u95e8\u5185-\u91c7\u56db\u5c0f\u533a)
p621
sg6
I665
sg7
I16
ssI667
(dp622
g3
I1
sg7
I31
sg6
I667
ssI669
(dp623
g3
I0
sg4
V515(\u4e1c\u5927\u6865\u8def\u53e3\u4e1c-\u5730\u94c1\u5317\u571f\u57ce\u7ad9)
p624
sg6
I669
sg7
I25
ssI671
(dp625
g3
I0
sg4
V\u72796(\u5317\u4eac\u897f\u7ad9-\u97e9\u5bb6\u5ddd\u5357\u7ad9)
p626
sg6
I671
sg7
I16
ssI673
(dp627
g3
I1
sg7
I31
sg6
I673
ssI675
(dp628
g3
I0
sg4
V846(\u5927\u5317\u7a91\u5357-\u6768\u79c0\u5e97)
p629
sg6
I675
sg7
I16
ssI677
(dp630
g3
I0
sg4
V841(\u4f19\u8fbe\u8425\u6751-\u4e3d\u56ed\u8def\u516c\u4ea4\u7ad9)
p631
sg6
I677
sg7
I16
ssI679
(dp632
g3
I0
sg4
V130(\u4e1c\u6e56-\u5317\u5b98\u5385)
p633
sg6
I679
sg7
I37
ssI681
(dp634
g3
I0
sg4
V827(\u5317\u4eac\u7ad9\u4e1c-\u5927\u5174\u897f\u5e84)
p635
sg6
I681
sg7
I21
ssI683
(dp636
g3
I0
sg4
V119(\u5b89\u5b9a\u95e8-\u57ce\u94c1\u828d\u836f\u5c45\u7ad9)
p637
sg6
I683
sg7
I25
ssI685
(dp638
g3
I0
sg4
V842(\u4ebf\u53d1\u5de5\u4e1a\u56ed\u533a-\u5927\u5174\u897f\u80e1\u6797)
p639
sg6
I685
sg7
I16
ssI687
(dp640
g3
I0
sg4
V809(\u5927\u5317\u7a91\u5357-\u4f70\u5bcc\u82d1)
p641
sg6
I687
sg7
I16
ssI689
(dp642
g3
I0
sg4
V916\u5feb(\u4e1c\u76f4\u95e8-\u6000\u67d4\u6c7d\u8f66\u7ad9)
p643
sg6
I689
sg7
I16
ssI691
(dp644
g3
I0
sg4
V916(\u4e1c\u76f4\u95e8-\u6000\u67d4\u6c7d\u8f66\u7ad9)
p645
sg6
I691
sg7
I16
ssI693
(dp646
g3
I0
sg4
V671(\u56db\u60e0\u7ad9-\u897f\u82d1)
p647
sg6
I693
sg7
I16
ssI695
(dp648
g3
I1
sg7
I38
sg6
I695
ssI697
(dp649
g3
I0
sg4
V890(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u4e0b\u82c7\u7538)
p650
sg6
I697
sg7
I16
ssI699
(dp651
g3
I0
sg4
V880\u533a\u95f4[\u8de8\u7701](\u534e\u4fa8\u519c\u573a-\u5fb7\u80dc\u95e8)
p652
sg6
I699
sg7
I26
ssI701
(dp653
g3
I0
sg4
V970\u5feb(\u671b\u4eac\u897f\u7ad9-\u5bc6\u4e91\u6c7d\u8f66\u7ad9)
p654
sg6
I701
sg7
I16
ssI703
(dp655
g3
I0
sg4
V671(\u897f\u82d1-\u56db\u60e0\u7ad9)
p656
sg6
I703
sg7
I16
ssI705
(dp657
g3
I0
sg4
V977\u5feb(\u51af\u897f\u897f\u91cc-\u516c\u4e3b\u575f\u5317)
p658
sg6
I705
sg7
I16
ssI707
(dp659
g3
I0
sg4
V61(\u5929\u9999\u9890\u5317\u91cc-\u961c\u6210\u95e8\u5185)
p660
sg6
I707
sg7
I25
ssI709
(dp661
g3
I0
sg4
V890(\u4e0b\u82c7\u7538-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p662
sg6
I709
sg7
I16
ssI711
(dp663
g3
I0
sg4
V916\u5feb(\u6000\u67d4\u6c7d\u8f66\u7ad9-\u4e1c\u76f4\u95e8)
p664
sg6
I711
sg7
I16
ssI713
(dp665
g3
I0
sg4
V669(\u4e07\u76db\u5317\u8857-\u5927\u5317\u7a91\u4e1c)
p666
sg6
I713
sg7
I16
ssI715
(dp667
g3
I0
sg4
V885(\u79ef\u6c34\u6f6d\u6865\u4e1c-\u660c\u5e73\u4f55\u8425\u7ad9)
p668
sg6
I715
sg7
I25
ssI717
(dp669
g3
I0
sg4
V827(\u5927\u5174\u897f\u5e84-\u5317\u4eac\u7ad9\u4e1c)
p670
sg6
I717
sg7
I21
ssI719
(dp671
g3
I0
sg4
V846(\u6768\u79c0\u5e97-\u5927\u5317\u7a91\u5357)
p672
sg6
I719
sg7
I16
ssI721
(dp673
g3
I0
sg4
V970(\u5bc6\u4e91\u6c7d\u8f66\u7ad9-\u5730\u94c1\u4ff8\u4f2f\u7ad9)
p674
sg6
I721
sg7
I16
ssI723
(dp675
g3
I0
sg4
V885(\u660c\u5e73\u4f55\u8425\u7ad9-\u79ef\u6c34\u6f6d\u6865\u4e1c)
p676
sg6
I723
sg7
I25
ssI725
(dp677
g3
I0
sg4
V880\u533a\u95f4[\u8de8\u7701](\u5fb7\u80dc\u95e8-\u534e\u4fa8\u519c\u573a)
p678
sg6
I725
sg7
I26
ssI727
(dp679
g3
I0
sg4
V119(\u57ce\u94c1\u828d\u836f\u5c45\u7ad9-\u5b89\u5b9a\u95e8)
p680
sg6
I727
sg7
I25
ssI729
(dp681
g3
I0
sg4
V\u72796(\u97e9\u5bb6\u5ddd\u5357\u7ad9-\u5317\u4eac\u897f\u7ad9)
p682
sg6
I729
sg7
I16
ssI731
(dp683
g3
I0
sg4
V130(\u5317\u5b98\u5385-\u4e1c\u6e56)
p684
sg6
I731
sg7
I37
ssI733
(dp685
g3
I0
sg4
V866(\u96c1\u6816\u5f00\u53d1\u533a\u6c7d\u8f66\u7ad9-\u4e1c\u76f4\u95e8)
p686
sg6
I733
sg7
I21
ssI735
(dp687
g3
I0
sg4
V977(\u51af\u6751\u897f\u91cc-\u660e\u6625\u82d1)
p688
sg6
I735
sg7
I16
ssI737
(dp689
g3
I0
sg4
V987(\u4e91\u9f99\u6da7\u98ce\u666f\u533a-\u671b\u4eac\u897f\u7ad9)
p690
sg6
I737
sg7
I16
ssI739
(dp691
g3
I0
sg4
V673(\u77f3\u5404\u5e84-\u5317\u4eac\u897f\u7ad9)
p692
sg6
I739
sg7
I16
ssI741
(dp693
g3
I0
sg4
V987(\u671b\u4eac\u897f\u7ad9-\u4e91\u9f99\u6da7\u98ce\u666f\u533a)
p694
sg6
I741
sg7
I16
ssI743
(dp695
g3
I0
sg4
V61(\u961c\u6210\u95e8\u5185-\u5929\u9999\u9890\u5317\u91cc)
p696
sg6
I743
sg7
I25
ssI745
(dp697
g3
I0
sg4
V\u591c2(\u7941\u5bb6\u8c41\u5b50-\u4e07\u6e90\u8def)
p698
sg6
I745
sg7
I18
ssI747
(dp699
g3
I0
sg4
V836\u533a\u95f4[\u5f20\u574a](\u5929\u6865\u6c7d\u8f66\u7ad9-\u5f20\u574a)
p700
sg6
I747
sg7
I18
ssI749
(dp701
g3
I0
sg4
V955(\u4e1c\u65b9\u592a\u9633\u57ce-\u4e1c\u76f4\u95e8\u5916)
p702
sg6
I749
sg7
I18
ssI751
(dp703
g3
I0
sg4
V833(\u6cb3\u5317\u5e84-\u9001\u53d8\u7535\u516c\u53f8\u8def\u53e3\u897f)
p704
sg6
I751
sg7
I18
ssI753
(dp705
g3
I0
sg4
V\u591c22(\u897f\u7ea2\u95e8\u897f\u7ad9-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p706
sg6
I753
sg7
I18
ssI755
(dp707
g3
I0
sg4
V\u591c10\u5916(\u4e1c\u76f4\u95e8-\u4e1c\u76f4\u95e8)
p708
sg6
I755
sg7
I18
ssI757
(dp709
g3
I0
sg4
V955(\u4e1c\u76f4\u95e8\u5916-\u4e1c\u65b9\u592a\u9633\u57ce)
p710
sg6
I757
sg7
I18
ssI759
(dp711
g3
I0
sg4
V\u72795(\u9999\u6cc9\u73af\u5c9b-\u5317\u4eac\u5357\u7ad9\u5357\u5e7f\u573a)
p712
sg6
I759
sg7
I18
ssI761
(dp713
g3
I0
sg4
V812(\u516b\u738b\u575f\u897f-\u71d5\u90ca\u51b6\u91d1\u4e00\u5c40)
p714
sg6
I761
sg7
I18
ssI763
(dp715
g3
I0
sg4
V850(\u9a6c\u5761\u82b1\u56ed-\u4e1c\u76f4\u95e8\u5916)
p716
sg6
I763
sg7
I18
ssI765
(dp717
g3
I0
sg4
V707(\u987e\u5bb6\u5e84\u6865\u897f-\u57ce\u5357\u5609\u56ed\u5317)
p718
sg6
I765
sg7
I18
ssI767
(dp719
g3
I0
sg4
V923(\u5434\u96c4\u5bfa-\u5b59\u6cb3\u516c\u4ea4\u573a\u7ad9)
p720
sg6
I767
sg7
I18
ssI769
(dp721
g3
I1
sg7
I25
sg6
I769
ssI771
(dp722
g3
I0
sg4
V\u72794(\u524d\u95e8-\u56fd\u9632\u5927\u5b66)
p723
sg6
I771
sg7
I18
ssI773
(dp724
g3
I0
sg4
V\u591c32(\u4e1c\u6e56-\u5317\u5b98\u5385)
p725
sg6
I773
sg7
I18
ssI775
(dp726
g3
I0
sg4
V\u591c15(\u5317\u4eac\u5357\u7ad9\u5357\u5e7f\u573a-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p727
sg6
I775
sg7
I18
ssI777
(dp728
g3
I0
sg4
V\u591c24(\u5317\u4eac\u5357\u7ad9\u5357\u5e7f\u573a-\u548c\u5e73\u4e1c\u6865\u5357)
p729
sg6
I777
sg7
I18
ssI779
(dp730
g3
I0
sg4
V825(\u5730\u94c1\u65e7\u5bab\u7ad9-\u5730\u94c1\u516c\u76ca\u897f\u6865\u7ad9)
p731
sg6
I779
sg7
I21
ssI781
(dp732
g3
I0
sg4
V\u72794(\u56fd\u9632\u5927\u5b66-\u524d\u95e8)
p733
sg6
I781
sg7
I18
ssI783
(dp734
g3
I0
sg4
V\u591c11(\u7fe0\u6797\u5c0f\u533a-\u9f99\u6f6d\u516c\u56ed)
p735
sg6
I783
sg7
I18
ssI785
(dp736
g3
I0
sg4
V\u591c34(\u5317\u4eac\u534e\u4fa8\u57ce-\u6167\u5fe0\u91cc)
p737
sg6
I785
sg7
I18
ssI787
(dp738
g3
I0
sg4
V918(\u4e1c\u76f4\u95e8\u67a2\u7ebd\u7ad9-\u5e73\u8c37\u6c7d\u8f66\u7ad9)
p739
sg6
I787
sg7
I37
ssI789
(dp740
g3
I0
sg4
V113(\u7941\u5bb6\u8c41\u5b50-\u5927\u5317\u7a91)
p741
sg6
I789
sg7
I25
ssI791
(dp742
g3
I0
sg4
V\u591c36(\u5bcc\u4e30\u6865\u897f-\u548c\u5e73\u4e1c\u6865\u5357)
p743
sg6
I791
sg7
I18
ssI793
(dp744
g3
I0
sg4
V\u591c10\u5185(\u4e1c\u76f4\u95e8-\u4e1c\u76f4\u95e8)
p745
sg6
I793
sg7
I18
ssI795
(dp746
g3
I0
sg4
V\u591c12(\u56db\u5b63\u9752\u6865\u5357-\u57ce\u5357\u5609\u56ed\u5317)
p747
sg6
I795
sg7
I18
ssI797
(dp748
g3
I0
sg4
V\u591c8(\u9890\u548c\u56ed-\u5c0f\u9a6c\u5382)
p749
sg6
I797
sg7
I18
ssI799
(dp750
g3
I0
sg4
V\u72795(\u5317\u4eac\u5357\u7ad9\u5357\u5e7f\u573a-\u9999\u6cc9\u73af\u5c9b)
p751
sg6
I799
sg7
I18
ssI801
(dp752
g3
I0
sg4
V935(\u4e1c\u76f4\u95e8\u5916-\u987a\u4e49\u534a\u58c1\u5e97)
p753
sg6
I801
sg7
I18
ssI803
(dp754
g3
I0
sg4
V\u591c4(\u83dc\u6237\u8425\u6865\u4e1c-\u5b89\u5b81\u5e84\u4e1c\u8def\u5357\u53e3)
p755
sg6
I803
sg7
I18
ssI805
(dp756
g3
I0
sg4
V509(\u57ce\u94c1\u897f\u4e8c\u65d7\u7ad9-\u897f\u82d1)
p757
sg6
I805
sg7
I25
ssI807
(dp758
g3
I0
sg4
V\u591c1(\u56db\u60e0\u67a2\u7ebd\u7ad9-\u8001\u5c71\u516c\u4ea4\u573a\u7ad9)
p759
sg6
I807
sg7
I18
ssI809
(dp760
g3
I0
sg4
V\u591c9(\u5df4\u6c9f\u6751-\u6167\u5fe0\u91cc)
p761
sg6
I809
sg7
I18
ssI811
(dp762
g3
I0
sg4
V\u591c20\u5916(\u5317\u5b98\u5385-\u5317\u5b98\u5385)
p763
sg6
I811
sg7
I18
ssI813
(dp764
g3
I0
sg4
V\u591c13(\u7518\u9732\u56ed-\u5730\u94c1\u6d77\u6dc0\u4e94\u8def\u5c45\u7ad9)
p765
sg6
I813
sg7
I18
ssI815
(dp766
g3
I0
sg4
V\u591c34(\u6167\u5fe0\u91cc-\u5317\u4eac\u534e\u4fa8\u57ce)
p767
sg6
I815
sg7
I18
ssI817
(dp768
g3
I0
sg4
V\u591c20\u5185(\u5317\u5b98\u5385-\u5317\u5b98\u5385)
p769
sg6
I817
sg7
I18
ssI819
(dp770
g3
I0
sg4
V667(\u5218\u5e84\u5317\u7ad9-\u5927\u5317\u7a91\u4e1c)
p771
sg6
I819
sg7
I18
ssI821
(dp772
g3
I0
sg4
V\u591c9(\u6167\u5fe0\u91cc-\u5df4\u6c9f\u6751)
p773
sg6
I821
sg7
I18
ssI823
(dp774
g3
I0
sg4
V936(\u4e5d\u8c37\u53e3\u6000\u5317\u6ed1\u96ea\u573a-\u4e1c\u76f4\u95e8\u5916)
p775
sg6
I823
sg7
I21
ssI825
(dp776
g3
I0
sg4
V\u591c2(\u4e07\u6e90\u8def-\u7941\u5bb6\u8c41\u5b50)
p777
sg6
I825
sg7
I18
ssI827
(dp778
g3
I0
sg4
V\u591c25(\u77f3\u5404\u5e84-\u5de6\u5b89\u8def)
p779
sg6
I827
sg7
I18
ssI829
(dp780
g3
I0
sg4
V\u591c12(\u57ce\u5357\u5609\u56ed\u5317-\u56db\u5b63\u9752\u6865\u5357)
p781
sg6
I829
sg7
I18
ssI831
(dp782
g3
I0
sg4
V918(\u5e73\u8c37\u6c7d\u8f66\u7ad9-\u4e1c\u76f4\u95e8\u5916)
p783
sg6
I831
sg7
I37
ssI833
(dp784
g3
I0
sg4
V\u591c17(\u5317\u4eac\u5357\u7ad9-\u5317\u4eac\u7ad9\u4e1c)
p785
sg6
I833
sg7
I18
ssI835
(dp786
g3
I0
sg4
V\u591c19(\u5317\u4eac\u7ad9\u4e1c-\u5317\u4eac\u7126\u5316\u5382)
p787
sg6
I835
sg7
I18
ssI837
(dp788
g3
I0
sg4
V\u591c21(\u897f\u76f4\u95e8-\u5317\u4eac\u7ad9\u4e1c)
p789
sg6
I837
sg7
I18
ssI839
(dp790
g3
I0
sg4
V\u591c4(\u5b89\u5b81\u5e84\u4e1c\u8def\u5357\u53e3-\u83dc\u6237\u8425\u6865\u4e1c)
p791
sg6
I839
sg7
I18
ssI841
(dp792
g3
I0
sg4
V850(\u4e1c\u76f4\u95e8\u5916-\u9a6c\u5761\u82b1\u56ed)
p793
sg6
I841
sg7
I18
ssI843
(dp794
g3
I0
sg4
V966(\u4e1c\u76f4\u95e8-\u5e73\u897f\u738b\u5e9c)
p795
sg6
I843
sg7
I18
ssI845
(dp796
g3
I0
sg4
V613(\u5efa\u6b23\u82d1-\u4e94\u8def)
p797
sg6
I845
sg7
I18
ssI847
(dp798
g3
I1
sg7
I40
sg6
I847
ssI849
(dp799
g3
I0
sg4
V\u591c26(\u548c\u5e73\u4e1c\u6865-\u57ce\u94c1\u5317\u82d1\u7ad9)
p800
sg6
I849
sg7
I18
ssI851
(dp801
g3
I0
sg4
V\u591c30\u5185(\u5341\u91cc\u6cb3\u6865\u5357-\u5341\u91cc\u6cb3\u6865\u5317)
p802
sg6
I851
sg7
I18
ssI853
(dp803
g3
I0
sg4
V\u591c18(\u57ce\u5357\u5609\u56ed\u5317-\u5de6\u5bb6\u5e84)
p804
sg6
I853
sg7
I18
ssI855
(dp805
g3
I0
sg4
V\u591c15(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u5317\u4eac\u5357\u7ad9\u5357\u5e7f\u573a)
p806
sg6
I855
sg7
I18
ssI857
(dp807
g3
I0
sg4
V\u591c17(\u5317\u4eac\u7ad9\u4e1c-\u5317\u4eac\u5357\u7ad9)
p808
sg6
I857
sg7
I18
ssI859
(dp809
g3
I0
sg4
V943\u8def[\u8de8\u7701](\u6c38\u5b9a\u95e8\u957f\u9014\u6c7d\u8f66\u7ad9-\u9738\u5dde\u706b\u8f66\u7ad9)
p810
sg6
I859
sg7
I19
ssI861
(dp811
g3
I0
sg4
V966(\u5e73\u897f\u738b\u5e9c-\u4e1c\u76f4\u95e8)
p812
sg6
I861
sg7
I18
ssI863
(dp813
g3
I0
sg4
V\u591c11(\u9f99\u6f6d\u516c\u56ed-\u7fe0\u6797\u5c0f\u533a)
p814
sg6
I863
sg7
I18
ssI865
(dp815
g3
I1
sg7
I31
sg6
I865
ssI867
(dp816
g3
I0
sg4
V\u591c7(\u5e73\u4e50\u56ed\u5317-\u97e9\u5e84\u5b50\u5317)
p817
sg6
I867
sg7
I18
ssI869
(dp818
g3
I0
sg4
V667(\u5927\u5317\u7a91\u4e1c-\u5218\u5e84\u5317\u7ad9)
p819
sg6
I869
sg7
I18
ssI871
(dp820
g3
I0
sg4
V\u591c6(\u56fd\u5bb6\u4f53\u80b2\u9986-\u9752\u5e74\u8def\u5c0f\u533a)
p821
sg6
I871
sg7
I18
ssI873
(dp822
g3
I0
sg4
V676(\u56e2\u6cb3\u5317\u6751-\u957f\u693f\u8857\u8def\u53e3\u897f)
p823
sg6
I873
sg7
I18
ssI875
(dp824
g3
I1
sg7
I31
sg6
I875
ssI877
(dp825
g3
I0
sg4
V896(\u5218\u5bb6\u7a91\u6865\u897f-\u826f\u4e61\u68a8\u6751\u516c\u4ea4\u573a\u7ad9)
p826
sg6
I877
sg7
I21
ssI879
(dp827
g3
I0
sg4
V936(\u4e1c\u76f4\u95e8\u5916-\u4e5d\u8c37\u53e3\u6000\u5317\u6ed1\u96ea\u573a)
p828
sg6
I879
sg7
I21
ssI881
(dp829
g3
I0
sg4
V\u591c3(\u5730\u94c1\u6d77\u6dc0\u4e94\u8def\u5c45\u7ad9-\u9752\u5e74\u8def\u5c0f\u533a)
p830
sg6
I881
sg7
I18
ssI883
(dp831
g3
I0
sg4
V\u591c30\u5916(\u5341\u91cc\u6cb3\u6865\u5317-\u5341\u91cc\u6cb3\u6865\u5357)
p832
sg6
I883
sg7
I18
ssI885
(dp833
g3
I0
sg4
V\u591c21(\u5317\u4eac\u7ad9\u4e1c-\u897f\u76f4\u95e8)
p834
sg6
I885
sg7
I18
ssI887
(dp835
g3
I0
sg4
V\u591c16(\u6653\u6708\u82d1\u516c\u4ea4\u603b\u7ad9-\u822a\u5929\u6865\u897f)
p836
sg6
I887
sg7
I18
ssI889
(dp837
g3
I0
sg4
V813(\u71d5\u90ca\u4e0a\u4e0a\u57ce\u4e94\u671f-\u5730\u94c1\u8349\u623f\u7ad9)
p838
sg6
I889
sg7
I18
ssI891
(dp839
g3
I0
sg4
V715(\u56db\u60e0\u6865-\u6653\u6708\u82d1\u516c\u4ea4\u603b\u7ad9)
p840
sg6
I891
sg7
I18
ssI893
(dp841
g3
I0
sg4
V\u591c5(\u7530\u987a\u5e84-\u5317\u4eac\u7ad9\u4e1c)
p842
sg6
I893
sg7
I18
ssI895
(dp843
g3
I0
sg4
V980(\u4e1c\u76f4\u95e8-\u5bc6\u4e91\u6c7d\u8f66\u7ad9)
p844
sg6
I895
sg7
I18
ssI897
(dp845
g3
I0
sg4
V929[\u5343\u519b\u53f0](\u5343\u519b\u53f0-\u5730\u94c1\u82f9\u679c\u56ed\u897f)
p846
sg6
I897
sg7
I21
ssI899
(dp847
g3
I0
sg4
V923(\u5b59\u6cb3\u516c\u4ea4\u573a\u7ad9-\u5434\u96c4\u5bfa)
p848
sg6
I899
sg7
I18
ssI901
(dp849
g3
I0
sg4
V509(\u897f\u82d1\u67a2\u7ebd\u7ad9-\u57ce\u94c1\u897f\u4e8c\u65d7\u7ad9)
p850
sg6
I901
sg7
I25
ssI903
(dp851
g3
I0
sg4
V813(\u5730\u94c1\u8349\u623f\u7ad9-\u71d5\u90ca\u4e0a\u4e0a\u57ce\u4e94\u671f)
p852
sg6
I903
sg7
I18
ssI905
(dp853
g3
I0
sg4
V\u591c32(\u5317\u5b98\u5385-\u4e1c\u6e56)
p854
sg6
I905
sg7
I18
ssI907
(dp855
g3
I0
sg4
V867(\u4e1c\u76f4\u95e8\u5916-\u7ea2\u87ba\u5bfa)
p856
sg6
I907
sg7
I18
ssI909
(dp857
g3
I0
sg4
V\u591c16(\u822a\u5929\u6865\u897f-\u6653\u6708\u82d1\u516c\u4ea4\u603b\u7ad9)
p858
sg6
I909
sg7
I18
ssI911
(dp859
g3
I0
sg4
V\u591c23(\u5415\u8425\u82b1\u56ed-\u5317\u4eac\u897f\u7ad9)
p860
sg6
I911
sg7
I18
ssI913
(dp861
g3
I0
sg4
V\u591c13(\u5730\u94c1\u6d77\u6dc0\u4e94\u8def\u5c45\u7ad9-\u7518\u9732\u56ed)
p862
sg6
I913
sg7
I18
ssI915
(dp863
g3
I0
sg4
V833(\u9001\u53d8\u7535\u516c\u53f8\u8def\u53e3\u897f-\u6cb3\u5317\u5e84)
p864
sg6
I915
sg7
I18
ssI917
(dp865
g3
I0
sg4
V\u591c28(\u60e0\u65b0\u4e1c\u6865\u5357-\u5730\u94c1\u5b8b\u5bb6\u5e84\u7ad9)
p866
sg6
I917
sg7
I18
ssI919
(dp867
g3
I0
sg4
V613(\u4e94\u8def-\u5efa\u6b23\u82d1)
p868
sg6
I919
sg7
I18
ssI921
(dp869
g3
I0
sg4
V\u591c14(\u5317\u4eac\u897f\u7ad9-\u56fd\u5bb6\u4f53\u80b2\u9986\u516c\u4ea4\u573a\u7ad9)
p870
sg6
I921
sg7
I18
ssI923
(dp871
g3
I0
sg4
V867(\u7ea2\u87ba\u5bfa-\u4e1c\u76f4\u95e8\u5916)
p872
sg6
I923
sg7
I18
ssI925
(dp873
g3
I0
sg4
V943\u8def[\u8de8\u7701](\u9738\u5dde\u706b\u8f66\u7ad9-\u6c38\u5b9a\u95e8\u957f\u9014\u6c7d\u8f66\u7ad9)
p874
sg6
I925
sg7
I19
ssI927
(dp875
g3
I0
sg4
V929[\u5343\u519b\u53f0](\u5730\u94c1\u82f9\u679c\u56ed\u897f-\u5343\u519b\u53f0)
p876
sg6
I927
sg7
I21
ssI929
(dp877
g3
I0
sg4
V\u591c19(\u5317\u4eac\u7126\u5316\u5382-\u5317\u4eac\u7ad9\u4e1c)
p878
sg6
I929
sg7
I18
ssI931
(dp879
g3
I0
sg4
V\u591c6(\u9752\u5e74\u8def\u5c0f\u533a-\u56fd\u5bb6\u4f53\u80b2\u9986)
p880
sg6
I931
sg7
I18
ssI933
(dp881
g3
I0
sg4
V113(\u5927\u5317\u7a91-\u7941\u5bb6\u8c41\u5b50)
p882
sg6
I933
sg7
I25
ssI935
(dp883
g3
I0
sg4
V\u591c18(\u5de6\u5bb6\u5e84-\u57ce\u5357\u5609\u56ed\u5317)
p884
sg6
I935
sg7
I18
ssI937
(dp885
g3
I0
sg4
V\u591c8(\u5c0f\u9a6c\u5382-\u9890\u548c\u56ed)
p886
sg6
I937
sg7
I18
ssI939
(dp887
g3
I0
sg4
V980(\u5bc6\u4e91\u6c7d\u8f66\u7ad9-\u4e1c\u76f4\u95e8\u5916)
p888
sg6
I939
sg7
I18
ssI941
(dp889
g3
I0
sg4
V\u591c24(\u548c\u5e73\u4e1c\u6865\u5357-\u5317\u4eac\u5357\u7ad9\u5357\u5e7f\u573a)
p890
sg6
I941
sg7
I18
ssI943
(dp891
g3
I0
sg4
V896(\u826f\u4e61\u68a8\u56ed\u516c\u4ea4\u573a\u8f66\u7ad9-\u5218\u5bb6\u7a91\u6865\u897f)
p892
sg6
I943
sg7
I21
ssI945
(dp893
g3
I0
sg4
V676(\u957f\u693f\u8857\u8def\u53e3\u897f-\u56e2\u6cb3\u5317\u6751)
p894
sg6
I945
sg7
I18
ssI947
(dp895
g3
I0
sg4
V836\u533a\u95f4[\u5f20\u574a](\u5f20\u574a-\u5929\u6865\u6c7d\u8f66\u7ad9)
p896
sg6
I947
sg7
I18
ssI949
(dp897
g3
I0
sg4
V812(\u71d5\u90ca\u51b6\u91d1\u4e00\u5c40-\u516b\u738b\u575f\u897f)
p898
sg6
I949
sg7
I18
ssI951
(dp899
g3
I0
sg4
V\u591c25(\u5de6\u5b89\u8def-\u77f3\u5404\u5e84)
p900
sg6
I951
sg7
I18
ssI953
(dp901
g3
I0
sg4
V\u591c26(\u57ce\u94c1\u5317\u82d1\u7ad9-\u548c\u5e73\u4e1c\u6865)
p902
sg6
I953
sg7
I18
ssI955
(dp903
g3
I0
sg4
V\u591c23(\u5317\u4eac\u897f\u7ad9-\u5415\u8425\u82b1\u56ed)
p904
sg6
I955
sg7
I18
ssI957
(dp905
g3
I0
sg4
V715(\u6653\u6708\u82d1\u516c\u4ea4\u603b\u7ad9-\u56db\u60e0\u6865)
p906
sg6
I957
sg7
I18
ssI959
(dp907
g3
I0
sg4
V935(\u987a\u4e49\u534a\u58c1\u5e97\u8f66\u7ad9-\u4e1c\u76f4\u95e8\u5916)
p908
sg6
I959
sg7
I18
ssI961
(dp909
g3
I1
sg7
I25
sg6
I961
ssI963
(dp910
g3
I0
sg4
V\u591c28(\u5730\u94c1\u5b8b\u5bb6\u5e84\u7ad9-\u60e0\u65b0\u4e1c\u6865\u897f)
p911
sg6
I963
sg7
I18
ssI965
(dp912
g3
I0
sg4
V\u591c1(\u8001\u5c71\u516c\u4ea4\u573a\u7ad9-\u56db\u60e0\u67a2\u7ebd\u7ad9)
p913
sg6
I965
sg7
I18
ssI967
(dp914
g3
I1
sg7
I28
sg6
I967
ssI969
(dp915
g3
I0
sg4
V\u591c7(\u97e9\u5e84\u5b50\u5317-\u5e73\u4e50\u56ed\u5317)
p916
sg6
I969
sg7
I18
ssI971
(dp917
g3
I1
sg7
I40
sg6
I971
ssI973
(dp918
g3
I0
sg4
V\u591c3(\u9752\u5e74\u8def\u5c0f\u533a-\u5730\u94c1\u6d77\u6dc0\u4e94\u8def\u5c45\u7ad9)
p919
sg6
I973
sg7
I18
ssI975
(dp920
g3
I1
sg7
I28
sg6
I975
ssI977
(dp921
g3
I0
sg4
V\u591c36(\u548c\u5e73\u4e1c\u6865\u5357-\u5bcc\u4e30\u6865\u897f)
p922
sg6
I977
sg7
I18
ssI979
(dp923
g3
I0
sg4
V\u591c14(\u56fd\u5bb6\u4f53\u80b2\u9986\u516c\u4ea4\u573a\u7ad9-\u5317\u4eac\u897f\u7ad9)
p924
sg6
I979
sg7
I18
ssI981
(dp925
g3
I0
sg4
V707(\u57ce\u5357\u5609\u56ed\u5317-\u987e\u5bb6\u5e84\u6865\u897f)
p926
sg6
I981
sg7
I18
ssI983
(dp927
g3
I0
sg4
V\u591c22(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u897f\u7ea2\u95e8\u897f\u7ad9)
p928
sg6
I983
sg7
I18
ssI985
(dp929
g3
I0
sg4
V\u591c5(\u5317\u4eac\u7ad9\u4e1c-\u7530\u987a\u5e84)
p930
sg6
I985
sg7
I18
ssI987
(dp931
g3
I0
sg4
V825(\u5730\u94c1\u516c\u76ca\u897f\u6865\u7ad9-\u65e7\u5bab\u4e1c\u53e3)
p932
sg6
I987
sg7
I21
ssI989
(dp933
g3
I0
sg4
V969(\u5730\u94c1\u897f\u5c40\u7ad9-\u6d77\u5b50\u89d2)
p934
sg6
I989
sg7
I21
ssI991
(dp935
g3
I0
sg4
V969(\u6d77\u5b50\u89d2-\u5730\u94c1\u897f\u5c40\u7ad9)
p936
sg6
I991
sg7
I21
ssI993
(dp937
g3
I0
sg4
V941(\u77f3\u9f99\u897f\u516c\u4ea4\u573a\u7ad9-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p938
sg6
I993
sg7
I21
ssI995
(dp939
g3
I0
sg4
V845(\u4e30\u76ca\u6865\u897f-\u7f8a\u574a\u6751)
p940
sg6
I995
sg7
I21
ssI997
(dp941
g3
I0
sg4
V\u8fd0\u901a202(\u4ea6\u5e84\u6865\u5357-\u535a\u5174\u4e00\u8def\u5317\u53e3)
p942
sg6
I997
sg7
I21
ssI999
(dp943
g3
I0
sg4
V847(\u9a6c\u7538\u6865\u897f-\u5b59\u6cb3\u516c\u4ea4\u573a\u7ad9)
p944
sg6
I999
sg7
I21
ssI1001
(dp945
g3
I0
sg4
V845(\u7f8a\u574a\u6751-\u4e30\u76ca\u6865\u897f)
p946
sg6
I1001
sg7
I21
ssI1003
(dp947
g3
I0
sg4
V993(\u7aa6\u5e97\u6c7d\u8f66\u7ad9-\u5730\u94c1\u897f\u7ea2\u95e8\u7ad9)
p948
sg6
I1003
sg7
I21
ssI1005
(dp949
g3
I0
sg4
V941(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u77f3\u9f99\u897f\u516c\u4ea4\u573a\u7ad9)
p950
sg6
I1005
sg7
I21
ssI1007
(dp951
g3
I0
sg4
V\u8fd0\u901a202(\u535a\u5174\u4e00\u8def\u5317\u53e3-\u4ea6\u5e84\u6865\u5357)
p952
sg6
I1007
sg7
I21
ssI1009
(dp953
g3
I0
sg4
V993(\u5730\u94c1\u897f\u7ea2\u95e8\u7ad9-\u7aa6\u5e97\u6c7d\u8f66\u7ad9)
p954
sg6
I1009
sg7
I21
ssI1011
(dp955
g3
I0
sg4
V847(\u5b59\u6cb3\u516c\u4ea4\u573a\u7ad9-\u9a6c\u7538\u6865\u897f)
p956
sg6
I1011
sg7
I21
ssI1013
(dp957
g3
I0
sg4
V976(\u751c\u6c34\u56ed\u5317\u91cc-\u76db\u6797\u82d1\u516c\u4ea4\u573a\u7ad9)
p958
sg6
I1013
sg7
I27
ssI1015
(dp959
g3
I0
sg4
V860(\u5730\u94c1\u5929\u901a\u82d1\u5317\u7ad9-\u66f9\u78be)
p960
sg6
I1015
sg7
I27
ssI1017
(dp961
g3
I0
sg4
V663(\u82f9\u679c\u56ed\u5357-\u5c0f\u9a6c\u573a)
p962
sg6
I1017
sg7
I27
ssI1019
(dp963
g3
I0
sg4
V828(\u6c38\u5b9a\u95e8\u957f\u9014\u6c7d\u8f66\u7ad9-\u53f0\u6e7e\u65b0\u57ce\u5357)
p964
sg6
I1019
sg7
I27
ssI1021
(dp965
g3
I0
sg4
V344\u5feb(\u56de\u9f99\u89c2\u5c0f\u533a-\u5fb7\u80dc\u95e8\u897f)
p966
sg6
I1021
sg7
I27
ssI1023
(dp967
g3
I0
sg4
V871(\u5317\u4eac\u5e02\u5546\u4e1a\u5b66\u6821-\u5317\u5927\u56fd\u9645\u533b\u9662)
p968
sg6
I1023
sg7
I27
ssI1025
(dp969
g3
I0
sg4
V976(\u76db\u6797\u82d1\u516c\u4ea4\u573a\u7ad9-\u751c\u6c34\u56ed\u5317\u91cc)
p970
sg6
I1025
sg7
I27
ssI1027
(dp971
g3
I0
sg4
V881(\u660c\u5e73\u4f55\u8425\u7ad9-\u5fb7\u80dc\u95e8\u897f)
p972
sg6
I1027
sg7
I27
ssI1029
(dp973
g3
I0
sg4
V878(\u957f\u9675-\u57ce\u94c1\u56de\u9f99\u89c2\u7ad9)
p974
sg6
I1029
sg7
I27
ssI1031
(dp975
g3
I0
sg4
V878(\u57ce\u94c1\u56de\u9f99\u89c2\u7ad9-\u957f\u9675)
p976
sg6
I1031
sg7
I27
ssI1033
(dp977
g3
I0
sg4
V881(\u5fb7\u80dc\u95e8\u897f-\u660c\u5e73\u4f55\u8425\u7ad9)
p978
sg6
I1033
sg7
I27
ssI1035
(dp979
g3
I0
sg4
V819(\u5730\u94c1\u8349\u623f\u7ad9-\u8bf8\u845b\u5e97)
p980
sg6
I1035
sg7
I27
ssI1037
(dp981
g3
I0
sg4
V333\u5185\u73af(\u5b89\u5b81\u5e84\u4e1c\u8def\u5357\u53e3-\u5b89\u5b81\u5e84\u4e1c\u8def\u5357\u53e3)
p982
sg6
I1037
sg7
I27
ssI1039
(dp983
g3
I0
sg4
V879(\u957f\u9675-\u516b\u8fbe\u5cad)
p984
sg6
I1039
sg7
I27
ssI1041
(dp985
g3
I0
sg4
V871(\u5317\u5927\u56fd\u9645\u533b\u9662-\u5317\u4eac\u5e02\u5546\u4e1a\u5b66\u6821)
p986
sg6
I1041
sg7
I27
ssI1043
(dp987
g3
I0
sg4
V828(\u53f0\u6e7e\u65b0\u57ce\u5357-\u6c38\u5b9a\u95e8\u957f\u9014\u6c7d\u8f66\u7ad9)
p988
sg6
I1043
sg7
I27
ssI1045
(dp989
g3
I0
sg4
V333\u5916\u73af(\u5b89\u5b81\u5e84\u4e1c\u8def\u5357\u53e3-\u5b89\u5b81\u5e84\u4e1c\u8def\u5357\u53e3)
p990
sg6
I1045
sg7
I27
ssI1047
(dp991
g3
I0
sg4
V663(\u5c0f\u9a6c\u573a-\u82f9\u679c\u56ed\u5357)
p992
sg6
I1047
sg7
I27
ssI1049
(dp993
g3
I0
sg4
V889(\u660c\u5e73\u4f55\u8425\u7ad9-\u5fb7\u80dc\u95e8\u897f)
p994
sg6
I1049
sg7
I27
ssI1051
(dp995
g3
I0
sg4
V889(\u5fb7\u80dc\u95e8\u897f-\u660c\u5e73\u4f55\u8425\u7ad9)
p996
sg6
I1051
sg7
I27
ssI1053
(dp997
g3
I0
sg4
V879(\u516b\u8fbe\u5cad-\u957f\u9675)
p998
sg6
I1053
sg7
I27
ssI1055
(dp999
g3
I0
sg4
V819(\u8bf8\u845b\u5e97-\u5730\u94c1\u8349\u623f\u7ad9)
p1000
sg6
I1055
sg7
I27
ssI1057
(dp1001
g3
I0
sg4
V344\u5feb(\u5fb7\u80dc\u95e8\u897f-\u56de\u9f99\u89c2\u5c0f\u533a)
p1002
sg6
I1057
sg7
I27
ssI1059
(dp1003
g3
I0
sg4
V860(\u66f9\u78be-\u5730\u94c1\u5929\u901a\u82d1\u5317\u7ad9)
p1004
sg6
I1059
sg7
I27
ssI1061
(dp1005
g3
I0
sg4
V52(\u5317\u4eac\u897f\u7ad9-\u5e73\u4e50\u56ed)
p1006
sg6
I1061
sg7
I30
ssI1063
(dp1007
g3
I0
sg4
V337(\u524d\u95e8\u897f-\u77f3\u666f\u5c71)
p1008
sg6
I1063
sg7
I30
ssI1065
(dp1009
g3
I0
sg4
V354(\u5bcc\u4e30\u6865\u897f-\u4eac\u539f\u8def\u53e3\u4e1c)
p1010
sg6
I1065
sg7
I30
ssI1067
(dp1011
g3
I0
sg4
V325(\u8859\u95e8\u53e3-\u9ad8\u4e95\u8def\u53e3\u5357)
p1012
sg6
I1067
sg7
I30
ssI1069
(dp1013
g3
I0
sg4
V598(\u897f\u9053\u53e3\u516c\u4ea4\u573a\u7ad9-\u516b\u5927\u5904)
p1014
sg6
I1069
sg7
I30
ssI1071
(dp1015
g3
I0
sg4
V63(\u6c38\u5b9a\u95e8\u957f\u9014\u6c7d\u8f66\u7ad9-\u4e3d\u6cfd\u6865)
p1016
sg6
I1071
sg7
I30
ssI1073
(dp1017
g3
I0
sg4
V373(\u4eac\u539f\u8def\u53e3\u4e1c-\u5317\u4eac\u897f\u7ad9)
p1018
sg6
I1073
sg7
I30
ssI1075
(dp1019
g3
I0
sg4
V354(\u4eac\u539f\u8def\u53e3\u4e1c-\u5bcc\u4e30\u6865\u897f)
p1020
sg6
I1075
sg7
I30
ssI1077
(dp1021
g3
I0
sg4
V624(\u822a\u5929\u6865\u5357-\u69d0\u6811\u5cad\u516c\u4ea4\u573a\u7ad9)
p1022
sg6
I1077
sg7
I30
ssI1079
(dp1023
g3
I0
sg4
V\u4e1311(\u7fe0\u8c37\u7389\u666f\u82d1\u5c0f\u533a-\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9)
p1024
sg6
I1079
sg7
I30
ssI1081
(dp1025
g3
I0
sg4
V527(\u96cd\u738b\u5e9c-\u5434\u5e84\u516c\u4ea4\u573a\u7ad9)
p1026
sg6
I1081
sg7
I30
ssI1083
(dp1027
g3
I0
sg4
V\u727918(\u5317\u4eac\u897f\u7ad9-\u897f\u82d1\u67a2\u7ebd\u7ad9)
p1028
sg6
I1083
sg7
I30
ssI1085
(dp1029
g3
I0
sg4
V325(\u9ad8\u4e95\u8def\u53e3\u5357-\u8859\u95e8\u53e3)
p1030
sg6
I1085
sg7
I30
ssI1087
(dp1031
g3
I0
sg4
V323(\u4e03\u91cc\u5e84\u897f\u884c-\u77e5\u6625\u91cc)
p1032
sg6
I1087
sg7
I30
ssI1089
(dp1033
g3
I0
sg4
V545(\u8001\u5c71\u897f\u8857-\u5434\u5e84\u516c\u4ea4\u573a\u7ad9)
p1034
sg6
I1089
sg7
I30
ssI1091
(dp1035
g3
I0
sg4
V\u4e1327(\u8fbe\u5b98\u8425-\u4e3d\u6cfd\u6865)
p1036
sg6
I1091
sg7
I30
ssI1093
(dp1037
g3
I0
sg4
V389(\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9-\u516b\u5927\u5904)
p1038
sg6
I1093
sg7
I30
ssI1095
(dp1039
g3
I0
sg4
V692(\u4e16\u754c\u516c\u56ed\u516c\u4ea4\u573a\u7ad9-\u6c38\u5b9a\u95e8\u5185)
p1040
sg6
I1095
sg7
I30
ssI1097
(dp1041
g3
I0
sg4
V32(\u516c\u4e3b\u575f\u897f-\u56fd\u5bb6\u5de5\u5546\u603b\u5c40)
p1042
sg6
I1097
sg7
I30
ssI1099
(dp1043
g3
I0
sg4
V78(\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9-\u5e7f\u5b89\u95e8)
p1044
sg6
I1099
sg7
I30
ssI1101
(dp1045
g3
I0
sg4
V338(\u7389\u6cc9\u8def\u53e3\u5357-\u4e30\u53f0\u4f53\u80b2\u4e2d\u5fc3)
p1046
sg6
I1101
sg7
I30
ssI1103
(dp1047
g3
I0
sg4
V531(\u4e3d\u6cfd\u6865-\u5434\u5e84\u516c\u4ea4\u573a\u7ad9)
p1048
sg6
I1103
sg7
I30
ssI1105
(dp1049
g3
I0
sg4
V546(\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9-\u5bcc\u4e30\u6865\u897f)
p1050
sg6
I1105
sg7
I30
ssI1107
(dp1051
g3
I0
sg4
V480(\u4e1c\u65b9\u65f6\u5c1a\u9a7e\u6821\u5317\u95e8-\u4e3d\u6cfd\u6865)
p1052
sg6
I1107
sg7
I30
ssI1109
(dp1053
g3
I0
sg4
V310(\u4e30\u53f0\u533a\u8f9b\u5e84-\u4e30\u53f0\u8def\u53e3)
p1054
sg6
I1109
sg7
I30
ssI1111
(dp1055
g3
I0
sg4
V611(\u4fdd\u798f\u5bfa\u6865\u897f-\u5f20\u4eea\u6751\u5357\u7ad9)
p1056
sg6
I1111
sg7
I30
ssI1113
(dp1057
g3
I0
sg4
V\u4e133(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p1058
sg6
I1113
sg7
I30
ssI1115
(dp1059
g3
I0
sg4
V79(\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9-\u77e5\u6625\u8def)
p1060
sg6
I1115
sg7
I30
ssI1117
(dp1061
g3
I0
sg4
V477(\u4e16\u754c\u516c\u56ed\u516c\u4ea4\u573a\u7ad9-\u8f9f\u624d\u80e1\u540c\u897f\u53e3)
p1062
sg6
I1117
sg7
I30
ssI1119
(dp1063
g3
I0
sg4
V10(\u5357\u83dc\u56ed-\u822a\u5929\u6865\u4e1c)
p1064
sg6
I1119
sg7
I34
ssI1121
(dp1065
g3
I0
sg4
V94(\u5854\u9662\u5c0f\u533a\u5357\u95e8-\u516c\u4e3b\u575f\u4e1c)
p1066
sg6
I1121
sg7
I30
ssI1123
(dp1067
g3
I0
sg4
V477(\u8f9f\u624d\u80e1\u540c\u897f\u53e3-\u4e16\u754c\u516c\u56ed\u516c\u4ea4\u573a\u7ad9)
p1068
sg6
I1123
sg7
I30
ssI1125
(dp1069
g3
I0
sg4
V338(\u4e30\u53f0\u4f53\u80b2\u4e2d\u5fc3-\u7389\u6cc9\u8def\u53e3\u5357)
p1070
sg6
I1125
sg7
I30
ssI1127
(dp1071
g3
I0
sg4
V64(\u516c\u4e3b\u575f\u897f-\u9752\u5854\u5c0f\u533a)
p1072
sg6
I1127
sg7
I30
ssI1129
(dp1073
g3
I0
sg4
V374(\u5317\u4eac\u897f\u7ad9-\u9890\u548c\u56ed\u65b0\u5efa\u5bab\u95e8)
p1074
sg6
I1129
sg7
I30
ssI1131
(dp1075
g3
I0
sg4
V83(\u6021\u6d77\u82b1\u56ed\u897f\u95e8-\u897f\u5355\u8def\u53e3\u4e1c)
p1076
sg6
I1131
sg7
I30
ssI1133
(dp1077
g3
I0
sg4
V20(\u5317\u4eac\u5357\u7ad9-\u5317\u4eac\u7ad9\u4e1c)
p1078
sg6
I1133
sg7
I30
ssI1135
(dp1079
g3
I0
sg4
V321(\u516d\u91cc\u6865\u4e1c-\u5357\u5bab\u5357\u7ad9)
p1080
sg6
I1135
sg7
I30
ssI1137
(dp1081
g3
I0
sg4
V531(\u5434\u5e84\u516c\u4ea4\u573a\u7ad9-\u4e3d\u6cfd\u6865)
p1082
sg6
I1137
sg7
I30
ssI1139
(dp1083
g3
I0
sg4
V546(\u5bcc\u4e30\u6865\u897f-\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9)
p1084
sg6
I1139
sg7
I30
ssI1141
(dp1085
g3
I0
sg4
V313(\u4e30\u53f0\u4f53\u80b2\u4e2d\u5fc3-\u5927\u738b\u5e99)
p1086
sg6
I1141
sg7
I30
ssI1143
(dp1087
g3
I0
sg4
V661(\u5317\u4eac\u897f\u7ad9-\u592a\u5b50\u5cea\u9675\u56ed)
p1088
sg6
I1143
sg7
I30
ssI1145
(dp1089
g3
I0
sg4
V63(\u4e3d\u6cfd\u6865-\u6c38\u5b9a\u95e8\u957f\u9014\u6c7d\u8f66\u7ad9)
p1090
sg6
I1145
sg7
I30
ssI1147
(dp1091
g3
I0
sg4
V64(\u9752\u5854\u5c0f\u533a-\u516c\u4e3b\u575f\u897f)
p1092
sg6
I1147
sg7
I30
ssI1149
(dp1093
g3
I0
sg4
V\u727917(\u5317\u4eac\u5357\u7ad9\u5357\u5e7f\u573a-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p1094
sg6
I1149
sg7
I30
ssI1151
(dp1095
g3
I0
sg4
V323(\u77e5\u6625\u91cc-\u4e03\u91cc\u5e84)
p1096
sg6
I1151
sg7
I30
ssI1153
(dp1097
g3
I0
sg4
V76(\u5e7f\u5b89\u95e8-\u5f20\u4eea\u6751\u516c\u4ea4\u573a\u7ad9)
p1098
sg6
I1153
sg7
I30
ssI1155
(dp1099
g3
I0
sg4
V634(\u4fdd\u798f\u5bfa\u6865\u897f-\u90ed\u5e84\u5b50\u516c\u4ea4\u573a\u7ad9)
p1100
sg6
I1155
sg7
I30
ssI1157
(dp1101
g3
I0
sg4
V309(\u4e8c\u4e03\u5382-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p1102
sg6
I1157
sg7
I30
ssI1159
(dp1103
g3
I0
sg4
V598(\u516b\u5927\u5904-\u897f\u9053\u53e3\u516c\u4ea4\u573a\u7ad9)
p1104
sg6
I1159
sg7
I30
ssI1161
(dp1105
g3
I0
sg4
V527(\u5434\u5e84\u516c\u4ea4\u573a\u7ad9-\u96cd\u738b\u5e9c)
p1106
sg6
I1161
sg7
I30
ssI1163
(dp1107
g3
I0
sg4
V\u727918(\u897f\u82d1\u67a2\u7ebd\u7ad9-\u5317\u4eac\u897f\u7ad9)
p1108
sg6
I1163
sg7
I30
ssI1165
(dp1109
g3
I0
sg4
V86(\u822a\u5929\u6865\u5317-\u56fd\u5bb6\u4f53\u80b2\u9986)
p1110
sg6
I1165
sg7
I30
ssI1167
(dp1111
g3
I0
sg4
V611(\u5f20\u4eea\u6751\u5357\u7ad9-\u4fdd\u798f\u5bfa\u6865\u897f)
p1112
sg6
I1167
sg7
I30
ssI1169
(dp1113
g3
I0
sg4
V99(\u5de6\u5b89\u8def-\u975b\u5382\u65b0\u6751)
p1114
sg6
I1169
sg7
I34
ssI1171
(dp1115
g3
I0
sg4
V68(\u9a6c\u5b98\u8425\u897f-\u5382\u6865\u8def\u53e3\u897f)
p1116
sg6
I1171
sg7
I30
ssI1173
(dp1117
g3
I0
sg4
V52(\u5e73\u4e50\u56ed-\u5317\u4eac\u897f\u7ad9)
p1118
sg6
I1173
sg7
I30
ssI1175
(dp1119
g3
I0
sg4
V334(\u52a8\u7269\u56ed\u67a2\u7ebd\u7ad9-\u5434\u5e84\u516c\u4ea4\u573a\u7ad9)
p1120
sg6
I1175
sg7
I30
ssI1177
(dp1121
g3
I0
sg4
V373(\u5317\u4eac\u897f\u7ad9-\u9c81\u8c37\u8def\u8859\u95e8\u53e3)
p1122
sg6
I1177
sg7
I30
ssI1179
(dp1123
g3
I0
sg4
V68(\u5382\u6865\u8def\u53e3\u5357-\u9a6c\u5b98\u8425\u897f)
p1124
sg6
I1179
sg7
I30
ssI1181
(dp1125
g3
I0
sg4
V\u4e1346(\u5434\u5e84\u516c\u4ea4\u573a\u7ad9-\u4eac\u539f\u8def\u53e3\u4e1c)
p1126
sg6
I1181
sg7
I30
ssI1183
(dp1127
g3
I0
sg4
V634(\u90ed\u5e84\u5b50\u516c\u4ea4\u573a\u7ad9-\u4fdd\u798f\u5bfa\u6865\u897f)
p1128
sg6
I1183
sg7
I30
ssI1185
(dp1129
g3
I0
sg4
V10(\u822a\u5929\u6865\u4e1c-\u5357\u83dc\u56ed)
p1130
sg6
I1185
sg7
I34
ssI1187
(dp1131
g3
I0
sg4
V79(\u77e5\u6625\u8def-\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9)
p1132
sg6
I1187
sg7
I30
ssI1189
(dp1133
g3
I0
sg4
V334(\u5434\u5e84\u516c\u4ea4\u573a\u7ad9-\u52a8\u7269\u56ed\u67a2\u7ebd\u7ad9)
p1134
sg6
I1189
sg7
I30
ssI1191
(dp1135
g3
I0
sg4
V\u4e1369(\u5730\u94c1\u516b\u5b9d\u5c71\u7ad9-\u8859\u95e8\u53e3)
p1136
sg6
I1191
sg7
I30
ssI1193
(dp1137
g3
I0
sg4
V\u4e1327(\u4e3d\u6cfd\u6865-\u8fbe\u5b98\u8425)
p1138
sg6
I1193
sg7
I30
ssI1195
(dp1139
g3
I0
sg4
V661(\u592a\u5b50\u5cea\u9675\u56ed-\u5317\u4eac\u897f\u7ad9)
p1140
sg6
I1195
sg7
I30
ssI1197
(dp1141
g3
I0
sg4
V\u727917(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u5317\u4eac\u5357\u7ad9\u5357\u5e7f\u573a)
p1142
sg6
I1197
sg7
I30
ssI1199
(dp1143
g3
I0
sg4
V612(\u5f20\u4eea\u6751\u5357\u7ad9-\u5317\u5b98\u5385)
p1144
sg6
I1199
sg7
I30
ssI1201
(dp1145
g3
I0
sg4
V308(\u9c81\u8c37\u8def\u8859\u95e8\u53e3-\u767d\u4e91\u8def)
p1146
sg6
I1201
sg7
I30
ssI1203
(dp1147
g3
I0
sg4
V50(\u9a6c\u5b98\u8425\u897f-\u8f66\u516c\u5e84\u5317)
p1148
sg6
I1203
sg7
I30
ssI1205
(dp1149
g3
I0
sg4
V480(\u4e3d\u6cfd\u6865-\u4e1c\u65b9\u65f6\u5c1a\u9a7e\u6821\u5317\u95e8)
p1150
sg6
I1205
sg7
I30
ssI1207
(dp1151
g3
I0
sg4
V451(\u516c\u4e3b\u575f\u897f-\u5bcc\u4e30\u6865\u897f)
p1152
sg6
I1207
sg7
I30
ssI1209
(dp1153
g3
I0
sg4
V20(\u5317\u4eac\u7ad9\u4e1c-\u5317\u4eac\u5357\u7ad9)
p1154
sg6
I1209
sg7
I29
ssI1211
(dp1155
g3
I0
sg4
V\u4e1369(\u8859\u95e8\u53e3-\u5730\u94c1\u516b\u5b9d\u5c71\u7ad9)
p1156
sg6
I1211
sg7
I30
ssI1213
(dp1157
g3
I0
sg4
V337(\u77f3\u666f\u5c71-\u957f\u693f\u8857\u8def\u53e3\u4e1c)
p1158
sg6
I1213
sg7
I30
ssI1215
(dp1159
g3
I0
sg4
V436(\u4eac\u539f\u8def\u53e3\u4e1c-\u7389\u6e0a\u6f6d\u5357\u8def\u897f\u53e3)
p1160
sg6
I1215
sg7
I30
ssI1217
(dp1161
g3
I0
sg4
V\u4e1346(\u4eac\u539f\u8def\u53e3\u4e1c-\u5434\u5e84\u516c\u4ea4\u573a\u7ad9)
p1162
sg6
I1217
sg7
I30
ssI1219
(dp1163
g3
I0
sg4
V574(\u4e30\u53f0\u533a\u8f9b\u5e84-\u9c81\u8c37\u8def\u8859\u95e8\u53e3)
p1164
sg6
I1219
sg7
I30
ssI1221
(dp1165
g3
I0
sg4
V481(\u5434\u5e84\u516c\u4ea4\u573a\u7ad9-\u5df4\u6c9f\u6751)
p1166
sg6
I1221
sg7
I30
ssI1223
(dp1167
g3
I0
sg4
V99(\u975b\u5382\u65b0\u6751-\u5de6\u5b89\u8def)
p1168
sg6
I1223
sg7
I34
ssI1225
(dp1169
g3
I0
sg4
V554(\u90ed\u5e84\u5b50\u516c\u4ea4\u573a\u7ad9-\u516d\u91cc\u6865\u5317\u91cc)
p1170
sg6
I1225
sg7
I30
ssI1227
(dp1171
g3
I0
sg4
V310(\u4e30\u53f0\u4f53\u80b2\u4e2d\u5fc3-\u4e30\u53f0\u533a\u8f9b\u5e84)
p1172
sg6
I1227
sg7
I30
ssI1229
(dp1173
g3
I0
sg4
V554(\u516d\u91cc\u6865\u5317\u91cc-\u90ed\u5e84\u5b50\u516c\u4ea4\u573a\u7ad9)
p1174
sg6
I1229
sg7
I30
ssI1231
(dp1175
g3
I0
sg4
V374(\u9890\u548c\u56ed\u65b0\u5efa\u5bab\u95e8-\u5317\u4eac\u897f\u7ad9)
p1176
sg6
I1231
sg7
I30
ssI1233
(dp1177
g3
I0
sg4
V313(\u5927\u738b\u5e99-\u4e30\u53f0\u8def\u53e3)
p1178
sg6
I1233
sg7
I30
ssI1235
(dp1179
g3
I0
sg4
V612(\u5317\u5b98\u5385-\u5f20\u4eea\u6751\u5357\u7ad9)
p1180
sg6
I1235
sg7
I30
ssI1237
(dp1181
g3
I0
sg4
V351(\u5927\u89c2\u56ed\u897f-\u4e30\u53f0\u8def\u53e3)
p1182
sg6
I1237
sg7
I30
ssI1239
(dp1183
g3
I0
sg4
V692(\u5148\u519c\u575b-\u4e16\u754c\u516c\u56ed\u516c\u4ea4\u573a\u7ad9)
p1184
sg6
I1239
sg7
I30
ssI1241
(dp1185
g3
I0
sg4
V76(\u5f20\u4eea\u6751\u516c\u4ea4\u573a\u7ad9-\u5e7f\u5b89\u95e8)
p1186
sg6
I1241
sg7
I30
ssI1243
(dp1187
g3
I0
sg4
V568(\u7530\u6751\u4e1c\u8def\u5357\u53e3-\u9a6c\u5b98\u8425)
p1188
sg6
I1243
sg7
I30
ssI1245
(dp1189
g3
I0
sg4
V308(\u767d\u4e91\u8def-\u8859\u95e8\u53e3)
p1190
sg6
I1245
sg7
I30
ssI1247
(dp1191
g3
I0
sg4
V321(\u5357\u5bab\u5357\u7ad9-\u516d\u91cc\u6865\u4e1c)
p1192
sg6
I1247
sg7
I30
ssI1249
(dp1193
g3
I0
sg4
V86(\u56fd\u5bb6\u4f53\u80b2\u9986-\u822a\u5929\u6865\u5317)
p1194
sg6
I1249
sg7
I30
ssI1251
(dp1195
g3
I0
sg4
V437(\u516c\u4e3b\u575f\u5317-\u9890\u548c\u56ed\u65b0\u5efa\u5bab\u95e8)
p1196
sg6
I1251
sg7
I30
ssI1253
(dp1197
g3
I0
sg4
V94(\u516c\u4e3b\u575f\u4e1c-\u5854\u9662\u5c0f\u533a\u5357\u95e8)
p1198
sg6
I1253
sg7
I30
ssI1255
(dp1199
g3
I0
sg4
V624(\u69d0\u6811\u5cad\u516c\u4ea4\u573a\u7ad9-\u822a\u5929\u6865\u5357)
p1200
sg6
I1255
sg7
I30
ssI1257
(dp1201
g3
I0
sg4
V574(\u4eac\u539f\u8def\u53e3\u4e1c-\u4e30\u53f0\u533a\u8f9b\u5e84)
p1202
sg6
I1257
sg7
I30
ssI1259
(dp1203
g3
I0
sg4
V57(\u975b\u5382\u65b0\u6751-\u56db\u60e0\u67a2\u7ebd\u7ad9)
p1204
sg6
I1259
sg7
I30
ssI1261
(dp1205
g3
I0
sg4
V351(\u4e30\u53f0\u4f53\u80b2\u4e2d\u5fc3-\u83dc\u6237\u8425\u6865\u4e1c)
p1206
sg6
I1261
sg7
I30
ssI1263
(dp1207
g3
I0
sg4
V78(\u5e7f\u5b89\u95e8\u5185-\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9)
p1208
sg6
I1263
sg7
I30
ssI1265
(dp1209
g3
I0
sg4
V437(\u9890\u548c\u56ed\u65b0\u5efa\u5bab\u95e8-\u516c\u4e3b\u575f\u5317)
p1210
sg6
I1265
sg7
I30
ssI1267
(dp1211
g3
I0
sg4
V568(\u9a6c\u5b98\u8425\u5357-\u7530\u6751\u4e1c\u8def\u5357\u53e3)
p1212
sg6
I1267
sg7
I30
ssI1269
(dp1213
g3
I0
sg4
V309(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u4e8c\u4e03\u5382)
p1214
sg6
I1269
sg7
I30
ssI1271
(dp1215
g3
I0
sg4
V451(\u5bcc\u4e30\u6865\u897f-\u516c\u4e3b\u575f\u897f)
p1216
sg6
I1271
sg7
I30
ssI1273
(dp1217
g3
I0
sg4
V32(\u56fd\u5bb6\u5de5\u5546\u603b\u5c40-\u516c\u4e3b\u575f\u897f)
p1218
sg6
I1273
sg7
I30
ssI1275
(dp1219
g3
I0
sg4
V57(\u56db\u60e0\u67a2\u7ebd\u7ad9-\u975b\u5382\u65b0\u6751)
p1220
sg6
I1275
sg7
I30
ssI1277
(dp1221
g3
I0
sg4
V545(\u5434\u5e84\u516c\u4ea4\u573a\u7ad9-\u8001\u5c71\u897f\u8857)
p1222
sg6
I1277
sg7
I30
ssI1279
(dp1223
g3
I0
sg4
V83(\u897f\u5355\u8def\u53e3\u4e1c-\u6021\u6d77\u82b1\u56ed\u897f\u95e8)
p1224
sg6
I1279
sg7
I30
ssI1281
(dp1225
g3
I0
sg4
V597(\u9ed1\u77f3\u5934\u6751-\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9)
p1226
sg6
I1281
sg7
I30
ssI1283
(dp1227
g3
I0
sg4
V597(\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9-\u9ed1\u77f3\u5934\u6751)
p1228
sg6
I1283
sg7
I30
ssI1285
(dp1229
g3
I0
sg4
V\u4e1311(\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9-\u7fe0\u8c37\u7389\u666f\u82d1\u5c0f\u533a)
p1230
sg6
I1285
sg7
I30
ssI1287
(dp1231
g3
I0
sg4
V50(\u8f66\u516c\u5e84\u5317-\u9a6c\u5b98\u8425\u897f)
p1232
sg6
I1287
sg7
I29
ssI1289
(dp1233
g3
I0
sg4
V481(\u5df4\u6c9f\u6751-\u5434\u5e84\u516c\u4ea4\u573a\u7ad9)
p1234
sg6
I1289
sg7
I30
ssI1291
(dp1235
g3
I0
sg4
V436(\u7389\u6e0a\u6f6d\u5357\u8def\u897f\u53e3-\u9c81\u8c37\u8def\u8859\u95e8\u53e3)
p1236
sg6
I1291
sg7
I30
ssI1293
(dp1237
g3
I0
sg4
V389(\u516b\u5927\u5904-\u9c81\u8c37\u516c\u4ea4\u573a\u7ad9)
p1238
sg6
I1293
sg7
I30
ssI1295
(dp1239
g3
I0
sg4
V601(\u7941\u5bb6\u575f-\u5730\u94c1\u5317\u5bab\u95e8\u7ad9)
p1240
sg6
I1295
sg7
I35
ssI1297
(dp1241
g3
I0
sg4
V\u4e1331(\u767e\u5609\u57ce\u5c0f\u533a\u4e1c\u95e8-\u5730\u94c1\u9f99\u6cfd\u7ad9)
p1242
sg6
I1297
sg7
I35
ssI1299
(dp1243
g3
I0
sg4
V\u4e1331(\u5730\u94c1\u9f99\u6cfd\u7ad9-\u767e\u5609\u57ce\u5c0f\u533a\u4e1c\u95e8)
p1244
sg6
I1299
sg7
I35
ssI1301
(dp1245
g3
I0
sg4
V621(\u534a\u622a\u5854\u6751-\u8001\u541b\u5802)
p1246
sg6
I1301
sg7
I39
ssI1303
(dp1247
g3
I0
sg4
V519(\u4e8c\u516d\u4e00\u533b\u9662-\u5730\u94c1\u9f99\u6cfd\u7ad9)
p1248
sg6
I1303
sg7
I35
ssI1305
(dp1249
g3
I0
sg4
V650(\u7126\u5e84\u6865\u5317-\u5b8b\u5bb6\u5e84\u67a2\u7ebd\u7ad9)
p1250
sg6
I1305
sg7
I35
ssI1307
(dp1251
g3
I0
sg4
V102\u7535\u8f66(\u5317\u4eac\u5357\u7ad9-\u52a8\u7269\u56ed\u67a2\u7ebd\u7ad9)
p1252
sg6
I1307
sg7
I35
ssI1309
(dp1253
g3
I0
sg4
V621(\u8001\u541b\u5802-\u534a\u622a\u5854\u6751)
p1254
sg6
I1309
sg7
I39
ssI1311
(dp1255
g3
I0
sg4
V616(\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a-\u5317\u6f5e\u56ed)
p1256
sg6
I1311
sg7
I35
ssI1313
(dp1257
g3
I0
sg4
V5(\u5317\u571f\u57ce\u516c\u4ea4\u573a\u7ad9-\u83dc\u6237\u8425\u6865)
p1258
sg6
I1313
sg7
I35
ssI1315
(dp1259
g3
I0
sg4
V102\u7535\u8f66(\u52a8\u7269\u56ed\u67a2\u7ebd\u7ad9-\u5317\u4eac\u5357\u7ad9)
p1260
sg6
I1315
sg7
I35
ssI1317
(dp1261
g3
I0
sg4
V616(\u5317\u6f5e\u56ed-\u5317\u4eac\u897f\u7ad9\u5357\u5e7f\u573a)
p1262
sg6
I1317
sg7
I35
ssI1319
(dp1263
g3
I0
sg4
V541(\u52b2\u677e-\u9ad8\u7891\u5e97\u4e1c)
p1264
sg6
I1319
sg7
I35
ssI1321
(dp1265
g3
I0
sg4
V519(\u5730\u94c1\u9f99\u6cfd\u7ad9-\u4e8c\u516d\u4e00\u533b\u9662)
p1266
sg6
I1321
sg7
I35
ssI1323
(dp1267
g3
I0
sg4
V650(\u5b8b\u5bb6\u5e84\u67a2\u7ebd\u7ad9-\u7126\u5e84\u6865\u5317)
p1268
sg6
I1323
sg7
I35
ssI1325
(dp1269
g3
I0
sg4
V541(\u9ad8\u7891\u5e97\u4e1c-\u52b2\u677e)
p1270
sg6
I1325
sg7
I35
ssI1327
(dp1271
g3
I0
sg4
V5(\u83dc\u6237\u8425\u6865-\u5317\u571f\u57ce\u516c\u4ea4\u573a\u7ad9)
p1272
sg6
I1327
sg7
I35
ssI1329
(dp1273
g3
I0
sg4
V601(\u5730\u94c1\u5317\u5bab\u95e8\u7ad9-\u7941\u5bb6\u575f)
p1274
sg6
I1329
sg7
I35
ssI1331
(dp1275
g3
I0
sg4
V701(\u5cb3\u5404\u5e84\u897f\u7ad9-\u5927\u897f\u6d0b\u65b0\u57ce\u5357\u95e8)
p1276
sg6
I1331
sg7
I37
ssI1333
(dp1277
g3
I0
sg4
V305(\u5b9d\u76db\u91cc\u5c0f\u533a-\u5fb7\u80dc\u95e8)
p1278
sg6
I1333
sg7
I37
ssI1335
(dp1279
g3
I0
sg4
V614(\u5927\u949f\u5bfa-\u5355\u6751)
p1280
sg6
I1335
sg7
I37
ssI1337
(dp1281
g3
I0
sg4
V620(\u65b0\u8857\u53e3\u8c41\u53e3-\u5929\u901a\u5317\u82d1)
p1282
sg6
I1337
sg7
I37
ssI1339
(dp1283
g3
I0
sg4
V409(\u6765\u5e7f\u8425\u897f\u6865\u4e1c-\u961c\u6210\u95e8\u5185)
p1284
sg6
I1339
sg7
I37
ssI1341
(dp1285
g3
I0
sg4
V625(\u4e8c\u62e8\u5b50\u65b0\u6751-\u9f13\u697c\u6865\u897f)
p1286
sg6
I1341
sg7
I37
ssI1343
(dp1287
g3
I0
sg4
V714(\u9999\u5c71-\u961c\u6210\u95e8\u5185)
p1288
sg6
I1343
sg7
I37
ssI1345
(dp1289
g3
I0
sg4
V21(\u5317\u4eac\u897f\u7ad9-\u5b89\u534e\u6865\u5317)
p1290
sg6
I1345
sg7
I37
ssI1347
(dp1291
g3
I0
sg4
V409(\u961c\u6210\u95e8\u5185-\u6765\u5e7f\u8425\u897f\u6865\u4e1c)
p1292
sg6
I1347
sg7
I37
ssI1349
(dp1293
g3
I0
sg4
V66(\u524d\u95e8-\u57ce\u5357\u5609\u56ed\u5317)
p1294
sg6
I1349
sg7
I37
ssI1351
(dp1295
g3
I0
sg4
V25(\u57ce\u5916\u8bda-\u5317\u4eac\u7ad9\u4e1c)
p1296
sg6
I1351
sg7
I37
ssI1353
(dp1297
g3
I0
sg4
V\u4e13117(\u5929\u901a\u897f\u82d1\u5357-\u71d5\u4e39)
p1298
sg6
I1353
sg7
I37
ssI1355
(dp1299
g3
I0
sg4
V701(\u5927\u897f\u6d0b\u65b0\u57ce\u5357\u95e8-\u5cb3\u5404\u5e84\u897f\u7ad9)
p1300
sg6
I1355
sg7
I37
ssI1357
(dp1301
g3
I0
sg4
V25(\u5317\u4eac\u7ad9\u4e1c-\u57ce\u5916\u8bda)
p1302
sg6
I1357
sg7
I37
ssI1359
(dp1303
g3
I0
sg4
V\u4e13119(\u5730\u94c1\u5929\u901a\u82d1\u5317\u7ad9-\u6d77\u9d84\u843d)
p1304
sg6
I1359
sg7
I37
ssI1361
(dp1305
g3
I0
sg4
V484(\u5317\u533b\u4e09\u9662-\u5730\u94c1\u5317\u82d1\u7ad9)
p1306
sg6
I1361
sg7
I37
ssI1363
(dp1307
g3
I0
sg4
V\u4e13163(\u5927\u7ea2\u95e8\u9526\u82d1\u5c0f\u533a-\u5927\u7ea2\u95e8\u6865)
p1308
sg6
I1363
sg7
I37
ssI1365
(dp1309
g3
I0
sg4
V558(\u7acb\u6c34\u6865-\u970d\u8425\u516c\u4ea4\u573a\u7ad9)
p1310
sg6
I1365
sg7
I37
ssI1367
(dp1311
g3
I0
sg4
V614(\u5355\u6751-\u5927\u949f\u5bfa)
p1312
sg6
I1367
sg7
I37
ssI1369
(dp1313
g3
I0
sg4
V408(\u77f3\u4f5b\u8425\u897f\u91cc-\u6167\u5fe0\u91cc)
p1314
sg6
I1369
sg7
I37
ssI1371
(dp1315
g3
I0
sg4
V439(\u767e\u5b50\u6e7e-\u5341\u91cc\u6cb3\u6865\u4e1c)
p1316
sg6
I1371
sg7
I37
ssI1373
(dp1317
g3
I0
sg4
V471(\u5730\u94c1\u671b\u4eac\u897f\u7ad9-\u671b\u4eac\u82b1\u56ed\u897f\u533a\u5317\u95e8)
p1318
sg6
I1373
sg7
I37
ssI1375
(dp1319
g3
I0
sg4
V\u4e13163(\u5927\u7ea2\u95e8\u6865-\u5927\u7ea2\u95e8\u9526\u82d1\u5c0f\u533a)
p1320
sg6
I1375
sg7
I37
ssI1377
(dp1321
g3
I0
sg4
V\u4e1359(\u7fe0\u6d77\u660e\u82d1-\u5fb7\u946b\u5609\u56ed)
p1322
sg6
I1377
sg7
I37
ssI1379
(dp1323
g3
I0
sg4
V404(\u6765\u5e7f\u8425\u897f\u6865\u4e1c-\u4e1c\u76f4\u95e8\u67a2\u7ebd\u7ad9)
p1324
sg6
I1379
sg7
I37
ssI1381
(dp1325
g3
I0
sg4
V319(\u5927\u5c6f\u4e1c-\u5929\u901a\u5317\u82d1)
p1326
sg6
I1381
sg7
I37
ssI1383
(dp1327
g3
I0
sg4
V\u4e1381(\u5317\u82d1\u516c\u4ea4\u573a\u7ad9-\u5730\u94c1\u7acb\u6c34\u6865\u5357\u7ad9)
p1328
sg6
I1383
sg7
I37
ssI1385
(dp1329
g3
I0
sg4
V510(\u53cc\u6cc9\u5821\u4e1c-\u674f\u575b\u8def)
p1330
sg6
I1385
sg7
I37
ssI1387
(dp1331
g3
I0
sg4
V439(\u5341\u91cc\u6cb3\u6865\u4e1c-\u767e\u5b50\u6e7e)
p1332
sg6
I1387
sg7
I37
ssI1389
(dp1333
g3
I0
sg4
V432(\u897f\u82d1\u67a2\u7ebd\u7ad9-\u5929\u901a\u5317\u82d1)
p1334
sg6
I1389
sg7
I37
ssI1391
(dp1335
g3
I0
sg4
V636(\u56de\u5357\u5bb6\u56ed-\u897f\u82d1\u67a2\u7ebd\u7ad9)
p1336
sg6
I1391
sg7
I37
ssI1393
(dp1337
g3
I0
sg4
V311(\u5927\u8fd0\u6751\u516c\u4ea4\u573a\u7ad9-\u6765\u5e7f\u8425\u897f\u6865\u4e1c)
p1338
sg6
I1393
sg7
I37
ssI1395
(dp1339
g3
I0
sg4
V558(\u970d\u8425\u516c\u4ea4\u573a\u7ad9-\u7acb\u6c34\u6865)
p1340
sg6
I1395
sg7
I37
ssI1397
(dp1341
g3
I0
sg4
V\u4e13169(\u897f\u7ea2\u95e8\u516c\u4ea4\u573a\u7ad9-\u6b23\u65fa\u5317\u5927\u8857)
p1342
sg6
I1397
sg7
I37
ssI1399
(dp1343
g3
I0
sg4
V479(\u548c\u5e73\u4e1c\u6865-\u4e1c\u5c0f\u53e3\u6751\u59d4\u4f1a)
p1344
sg6
I1399
sg7
I37
ssI1401
(dp1345
g3
I0
sg4
V51(\u53cc\u9f99\u5c0f\u533a-\u5609\u56ed\u4e09\u91cc)
p1346
sg6
I1401
sg7
I37
ssI1403
(dp1347
g3
I0
sg4
V17(\u524d\u95e8-\u53cc\u5e99)
p1348
sg6
I1403
sg7
I39
ssI1405
(dp1349
g3
I0
sg4
V\u4e13119(\u6d77\u9d84\u843d-\u5730\u94c1\u5929\u901a\u82d1\u5317\u7ad9)
p1350
sg6
I1405
sg7
I37
ssI1407
(dp1351
g3
I0
sg4
V408(\u6167\u5fe0\u91cc-\u77f3\u4f5b\u8425\u897f\u91cc)
p1352
sg6
I1407
sg7
I37
ssI1409
(dp1353
g3
I0
sg4
V387(\u5317\u4eac\u897f\u7ad9-\u6167\u5fe0\u8def\u4e1c\u53e3)
p1354
sg6
I1409
sg7
I37
ssI1411
(dp1355
g3
I0
sg4
V602(\u8001\u541b\u5802\u5317\u7ad9-\u4e30\u5317\u6865)
p1356
sg6
I1411
sg7
I37
ssI1413
(dp1357
g3
I0
sg4
V478(\u5b66\u77e5\u6865\u5317-\u5c0f\u8f9b\u5e84\u6751)
p1358
sg6
I1413
sg7
I37
ssI1415
(dp1359
g3
I0
sg4
V471(\u671b\u4eac\u82b1\u56ed\u897f\u533a\u5317\u95e8-\u5730\u94c1\u671b\u4eac\u897f\u7ad9)
p1360
sg6
I1415
sg7
I37
ssI1417
(dp1361
g3
I0
sg4
V573(\u534e\u5a01\u5357\u8def\u4e1c\u53e3-\u4e09\u8425\u95e8)
p1362
sg6
I1417
sg7
I37
ssI1419
(dp1363
g3
I0
sg4
V698(\u9999\u5c71-\u57ce\u5357\u5609\u56ed\u5317)
p1364
sg6
I1419
sg7
I37
ssI1421
(dp1365
g3
I0
sg4
V387(\u6167\u5fe0\u8def\u4e1c\u53e3-\u5317\u4eac\u897f\u7ad9)
p1366
sg6
I1421
sg7
I37
ssI1423
(dp1367
g3
I0
sg4
V753(\u6167\u5fe0\u91cc-\u9a6c\u8fde\u5e97)
p1368
sg6
I1423
sg7
I39
ssI1425
(dp1369
g3
I0
sg4
V569(\u5317\u4eac\u4f1a\u8bae\u4e2d\u5fc3-\u59dc\u5e84\u6e56)
p1370
sg6
I1425
sg7
I37
ssI1427
(dp1371
g3
I0
sg4
V567(\u5927\u897f\u6d0b\u65b0\u57ce\u5357\u95e8-\u60e0\u65b0\u897f\u8857\u5317\u53e3)
p1372
sg6
I1427
sg7
I37
ssI1429
(dp1373
g3
I0
sg4
V567(\u60e0\u65b0\u897f\u8857\u5317\u53e3-\u5927\u897f\u6d0b\u65b0\u57ce\u5357\u95e8)
p1374
sg6
I1429
sg7
I37
ssI1431
(dp1375
g3
I0
sg4
V463(\u5317\u4e9a\u82b1\u56ed-\u5730\u94c1\u9f99\u6cfd\u7ad9)
p1376
sg6
I1431
sg7
I37
ssI1433
(dp1377
g3
I0
sg4
V21(\u5b89\u534e\u6865\u5317-\u5317\u4eac\u897f\u7ad9)
p1378
sg6
I1433
sg7
I37
ssI1435
(dp1379
g3
I0
sg4
V\u4e1359(\u5fb7\u946b\u5609\u56ed-\u7fe0\u6d77\u660e\u82d1)
p1380
sg6
I1435
sg7
I37
ssI1437
(dp1381
g3
I0
sg4
V636(\u897f\u82d1\u67a2\u7ebd\u7ad9-\u56de\u5357\u5bb6\u56ed)
p1382
sg6
I1437
sg7
I37
ssI1439
(dp1383
g3
I0
sg4
V361(\u5df4\u6c9f\u6751-\u671b\u4eac\u79d1\u6280\u521b\u4e1a\u56ed)
p1384
sg6
I1439
sg7
I37
ssI1441
(dp1385
g3
I0
sg4
V620(\u5929\u901a\u5317\u82d1-\u65b0\u8857\u53e3\u8c41\u53e3)
p1386
sg6
I1441
sg7
I37
ssI1443
(dp1387
g3
I0
sg4
V698(\u57ce\u5357\u5609\u56ed\u5317-\u9999\u5c71)
p1388
sg6
I1443
sg7
I37
ssI1445
(dp1389
g3
I0
sg4
V510(\u674f\u575b\u8def-\u53cc\u6cc9\u5821\u4e1c)
p1390
sg6
I1445
sg7
I37
ssI1447
(dp1391
g3
I0
sg4
V490(\u961c\u6210\u95e8\u5185-\u5b9d\u76db\u91cc\u5c0f\u533a)
p1392
sg6
I1447
sg7
I37
ssI1449
(dp1393
g3
I0
sg4
V625(\u9f13\u697c\u6865\u897f-\u4e8c\u62e8\u5b50\u65b0\u6751)
p1394
sg6
I1449
sg7
I37
ssI1451
(dp1395
g3
I0
sg4
V670(\u5fb7\u80dc\u95e8\u897f-\u767e\u5584\u9547\u653f\u5e9c)
p1396
sg6
I1451
sg7
I37
ssI1453
(dp1397
g3
I0
sg4
V51(\u5609\u56ed\u4e09\u91cc-\u53cc\u9f99\u5c0f\u533a)
p1398
sg6
I1453
sg7
I37
ssI1455
(dp1399
g3
I0
sg4
V478(\u5c0f\u8f9b\u5e84\u6751-\u5b66\u77e5\u6865\u5317)
p1400
sg6
I1455
sg7
I37
ssI1457
(dp1401
g3
I0
sg4
V714(\u961c\u6210\u95e8\u5185-\u9999\u5c71)
p1402
sg6
I1457
sg7
I37
ssI1459
(dp1403
g3
I0
sg4
V547(\u548c\u5e73\u897f\u6865-\u671b\u4eac\u5317\u8def\u4e1c\u53e3)
p1404
sg6
I1459
sg7
I37
ssI1461
(dp1405
g3
I0
sg4
V66(\u57ce\u5357\u5609\u56ed\u5317-\u524d\u95e8)
p1406
sg6
I1461
sg7
I37
ssI1463
(dp1407
g3
I0
sg4
V361(\u671b\u4eac\u79d1\u6280\u521b\u4e1a\u56ed-\u5df4\u6c9f\u6751)
p1408
sg6
I1463
sg7
I37
ssI1465
(dp1409
g3
I0
sg4
V630(\u9999\u5c71-\u5927\u8fd0\u6751\u516c\u4ea4\u573a\u7ad9)
p1410
sg6
I1465
sg7
I37
ssI1467
(dp1411
g3
I0
sg4
V479(\u4e1c\u5c0f\u53e3\u6751\u59d4\u4f1a-\u548c\u5e73\u4e1c\u6865)
p1412
sg6
I1467
sg7
I37
ssI1469
(dp1413
g3
I0
sg4
V311(\u6765\u5e7f\u8425\u897f\u6865\u4e1c-\u5927\u8fd0\u6751\u516c\u4ea4\u573a\u7ad9)
p1414
sg6
I1469
sg7
I37
ssI1471
(dp1415
g3
I0
sg4
V305(\u5fb7\u80dc\u95e8-\u5b9d\u76db\u91cc\u5c0f\u533a)
p1416
sg6
I1471
sg7
I37
ssI1473
(dp1417
g3
I0
sg4
V609(\u5355\u6751-\u5927\u949f\u5bfa)
p1418
sg6
I1473
sg7
I37
ssI1475
(dp1419
g3
I0
sg4
V432(\u5929\u901a\u5317\u82d1-\u897f\u82d1\u67a2\u7ebd\u7ad9)
p1420
sg6
I1475
sg7
I37
ssI1477
(dp1421
g3
I0
sg4
V484(\u5730\u94c1\u5317\u82d1\u7ad9-\u5317\u533b\u4e09\u9662)
p1422
sg6
I1477
sg7
I37
ssI1479
(dp1423
g3
I0
sg4
V476(\u5b9d\u76db\u91cc\u5c0f\u533a-\u897f\u82d1\u67a2\u7ebd\u7ad9)
p1424
sg6
I1479
sg7
I37
ssI1481
(dp1425
g3
I0
sg4
V573(\u4e09\u8425\u95e8-\u534e\u5a01\u5357\u8def)
p1426
sg6
I1481
sg7
I37
ssI1483
(dp1427
g3
I0
sg4
V307(\u5df4\u6c9f\u6751-\u56de\u9f99\u89c2\u516c\u4ea4\u573a\u7ad9)
p1428
sg6
I1483
sg7
I37
ssI1485
(dp1429
g3
I0
sg4
V547(\u671b\u4eac\u5317\u8def\u4e1c\u53e3-\u548c\u5e73\u897f\u6865)
p1430
sg6
I1485
sg7
I37
ssI1487
(dp1431
g3
I0
sg4
V\u4e1381(\u5730\u94c1\u7acb\u6c34\u6865\u5357\u7ad9-\u5317\u82d1\u516c\u4ea4\u573a\u7ad9)
p1432
sg6
I1487
sg7
I37
ssI1489
(dp1433
g3
I0
sg4
V39(\u5317\u4eac\u7ad9\u4e1c-\u53cc\u5e99)
p1434
sg6
I1489
sg7
I37
ssI1491
(dp1435
g3
I0
sg4
V490(\u5b9d\u76db\u91cc\u5c0f\u533a-\u961c\u6210\u95e8\u5185)
p1436
sg6
I1491
sg7
I37
ssI1493
(dp1437
g3
I0
sg4
V\u4e13169(\u6b23\u65fa\u5317\u5927\u8857-\u897f\u7ea2\u95e8\u516c\u4ea4\u573a\u7ad9)
p1438
sg6
I1493
sg7
I37
ssI1495
(dp1439
g3
I0
sg4
V696(\u9ec4\u6e2f\u6751-\u9999\u5c71)
p1440
sg6
I1495
sg7
I37
ssI1497
(dp1441
g3
I0
sg4
V39(\u53cc\u5e99-\u5317\u4eac\u7ad9\u4e1c)
p1442
sg6
I1497
sg7
I37
ssI1499
(dp1443
g3
I0
sg4
V602(\u4e30\u5317\u6865-\u8001\u541b\u5802\u5317\u7ad9)
p1444
sg6
I1499
sg7
I37
ssI1501
(dp1445
g3
I0
sg4
V569(\u59dc\u5e84\u6e56-\u5317\u4eac\u4f1a\u8bae\u4e2d\u5fc3)
p1446
sg6
I1501
sg7
I37
ssI1503
(dp1447
g3
I0
sg4
V307(\u56de\u9f99\u89c2\u516c\u4ea4\u573a\u7ad9-\u5df4\u6c9f\u6751)
p1448
sg6
I1503
sg7
I37
ssI1505
(dp1449
g3
I0
sg4
V17(\u53cc\u5e99-\u524d\u95e8)
p1450
sg6
I1505
sg7
I39
ssI1507
(dp1451
g3
I0
sg4
V753(\u9a6c\u8fde\u5e97-\u6167\u5fe0\u91cc)
p1452
sg6
I1507
sg7
I39
ssI1509
(dp1453
g3
I0
sg4
V630(\u5927\u8fd0\u6751\u516c\u4ea4\u573a\u7ad9-\u9999\u5c71)
p1454
sg6
I1509
sg7
I37
ssI1511
(dp1455
g3
I0
sg4
V\u4e1343(\u5b9d\u76db\u91cc\u5c0f\u533a\u897f\u884c-\u5b9d\u76db\u91cc\u5c0f\u533a\u4e1c\u884c)
p1456
sg6
I1511
sg7
I37
ssI1513
(dp1457
g3
I0
sg4
V463(\u5730\u94c1\u9f99\u6cfd\u7ad9-\u5317\u4e9a\u82b1\u56ed)
p1458
sg6
I1513
sg7
I37
ssI1515
(dp1459
g3
I0
sg4
V609(\u5927\u949f\u5bfa-\u5355\u6751)
p1460
sg6
I1515
sg7
I37
ssI1517
(dp1461
g3
I0
sg4
V\u4e13117(\u71d5\u4e39-\u5929\u901a\u897f\u82d1\u5357)
p1462
sg6
I1517
sg7
I37
ssI1519
(dp1463
g3
I0
sg4
V670(\u767e\u5584\u9547\u653f\u5e9c-\u5fb7\u80dc\u95e8\u897f)
p1464
sg6
I1519
sg7
I37
ssI1521
(dp1465
g3
I0
sg4
V319(\u5929\u901a\u5317\u82d1-\u5927\u5c6f\u4e1c)
p1466
sg6
I1521
sg7
I37
ssI1523
(dp1467
g3
I0
sg4
V476(\u897f\u82d1\u67a2\u7ebd\u7ad9-\u5b9d\u76db\u91cc\u5c0f\u533a)
p1468
sg6
I1523
sg7
I37
ssI1525
(dp1469
g3
I0
sg4
V404(\u4e1c\u76f4\u95e8\u67a2\u7ebd\u7ad9-\u6765\u5e7f\u8425\u897f\u6865\u4e1c)
p1470
sg6
I1525
sg7
I37
ssI1527
(dp1471
g3
I0
sg4
V696(\u9999\u5c71-\u9ec4\u6e2f\u6751)
p1472
sg6
I1527
sg7
I37
ssI1529
(dp1473
g3
I0
sg4
V584(\u5927\u949f\u5bfa-\u9890\u548c\u5c71\u5e84)
p1474
sg6
I1529
sg7
I39
ssI1531
(dp1475
g3
I0
sg4
V584(\u9890\u548c\u5c71\u5e84-\u5927\u949f\u5bfa)
p1476
sg6
I1531
sg7
I39
ssI1533
(dp1477
g3
I0
sg4
V691(\u97e9\u5e84\u5b50\u5317-\u7d22\u5bb6\u575f)
p1478
sg6
I1533
sg7
I39
ssI1535
(dp1479
g3
I0
sg4
V695(\u5317\u4eac\u897f\u7ad9-\u65f6\u4ee3\u5e84\u56ed\u5317\u7ad9)
p1480
sg6
I1535
sg7
I39
ssI1537
(dp1481
g3
I0
sg4
V717(\u83dc\u6237\u8425\u6865\u4e1c-\u5730\u94c1\u897f\u4e8c\u65d7\u7ad9)
p1482
sg6
I1537
sg7
I39
ssI1539
(dp1483
g3
I0
sg4
V55(\u7941\u5bb6\u8c41\u5b50-\u897f\u5b89\u95e8)
p1484
sg6
I1539
sg7
I39
ssI1541
(dp1485
g3
I0
sg4
V717(\u5730\u94c1\u897f\u4e8c\u65d7\u7ad9-\u83dc\u6237\u8425\u6865\u4e1c)
p1486
sg6
I1541
sg7
I39
ssI1543
(dp1487
g3
I0
sg4
V431(\u5355\u5e97-\u4e1c\u56db\u5341\u6761\u6865\u4e1c)
p1488
sg6
I1543
sg7
I39
ssI1545
(dp1489
g3
I0
sg4
V695(\u65f6\u4ee3\u5e84\u56ed\u5317\u7ad9-\u5317\u4eac\u897f\u7ad9)
p1490
sg6
I1545
sg7
I39
ssI1547
(dp1491
g3
I0
sg4
V615(\u795e\u8def\u8857-\u5218\u5e84\u5317\u7ad9)
p1492
sg6
I1547
sg7
I39
ssI1549
(dp1493
g3
I0
sg4
V431(\u4e1c\u56db\u5341\u6761\u6865\u4e1c-\u5355\u5e97)
p1494
sg6
I1549
sg7
I39
ssI1551
(dp1495
g3
I0
sg4
V422(\u5b89\u8d1e\u6865\u5317-\u6765\u5e7f\u8425\u897f\u6865\u4e1c)
p1496
sg6
I1551
sg7
I39
ssI1553
(dp1497
g3
I0
sg4
V615(\u5218\u5e84\u5317\u7ad9-\u795e\u8def\u8857)
p1498
sg6
I1553
sg7
I39
ssI1555
(dp1499
g3
I0
sg4
V55(\u897f\u5b89\u95e8-\u7941\u5bb6\u8c41\u5b50)
p1500
sg6
I1555
sg7
I39
ssI1557
(dp1501
g3
I0
sg4
V422(\u6765\u5e7f\u8425\u897f\u6865\u4e1c-\u5b89\u8d1e\u6865\u5317)
p1502
sg6
I1557
sg7
I39
ssI1559
(dp1503
g3
I0
sg4
V536(\u5c4f\u7fe0\u897f\u8def\u4e1c\u53e3-\u5de6\u5bb6\u5e84)
p1504
sg6
I1559
sg7
I39
ssI1561
(dp1505
g3
I0
sg4
V127(\u5730\u94c1\u67f3\u82b3\u7ad9-\u5317\u4eac\u7ad9\u897f)
p1506
sg6
I1561
sg7
I39
ssI1563
(dp1507
g3
I0
sg4
V691(\u6587\u6167\u6865\u5357-\u97e9\u5e84\u5b50\u5317)
p1508
sg6
I1563
sg7
I39
ssI1565
(dp1509
g3
I0
sg4
V536(\u5de6\u5bb6\u5e84-\u5c4f\u7fe0\u897f\u8def\u4e1c\u53e3)
p1510
sg6
I1565
sg7
I39
ssI1567
(dp1511
g3
I0
sg4
V127(\u5317\u4eac\u7ad9\u897f-\u5730\u94c1\u67f3\u82b3\u7ad9)
p1512
sg6
I1567
sg7
I39
ss.

================================================
FILE: slack_bot/plugins/dianping.py
================================================
# coding=utf-8
import re
import hashlib
from functools import partial

from flask import current_app as app
import requests

from baidumap import address2geo
from utils import gen_attachment

description = """
[大众点评]查找附近美食: "[城市名(默认北京市, 要带`市`)] xx有什么美食|xx附近美食 [带图] [私聊]",比如:
* 酒仙桥附近美食
* 上海市 宜山路455号有什么美食(上海uber)
"""

API_URL = 'http://api.dianping.com/v1/{0}/{1}'
TEST_TXT_REGEX = re.compile(r'(.*)\(.*\.\.\.\)')
GOODS_REGEX = re.compile(r'(.*)附近美食|(.*)有什么美食|(.*?)美食(.*?)')
CITY_REGEX = re.compile(ur'(\W?)(.*)市', re.UNICODE)


def real_name(name):
    match = TEST_TXT_REGEX.search(name)
    if match:
        name = match.groups()[0]
    return name


def concat_params(appkey, secret, params):
    codec = appkey
    for key in sorted(params.keys()):
        codec += key + str(params[key])

    codec += secret

    # 签名计算
    sign = (hashlib.sha1(codec).hexdigest()).upper()

    url_trail = 'appkey=' + appkey + '&sign=' + sign
    for pair in params.items():
        url_trail += '&' + pair[0] + '=' + str(pair[1])
    return '?' + url_trail


class DianpingApi(object):
    def __init__(self, appkey, secret):
        self.concat_params = partial(concat_params, appkey, secret)

    def bind_api(self, path, subpath, params):
        params.pop('self')
        path_url = API_URL.format(path, subpath) + self.concat_params(params)
        r = requests.get(path_url)
        return r.json()

    def get_business_info(self, business, details=False):
        url = business['business_url']  # 商户页面URL链接
        # id = business['business_id']
        distance = business['distance']  # 商户与参数坐标的距离,单位为米
        # coupon_description = business['coupon_description']  # 优惠券描述
        # deals_description = ','.join([
        #     c['description'] for c in business['deals']])  # 团购描述
        name = real_name(business['name'])  # 商户名
        # branch_name = business['branch_name']  # 分店名
        address = business['address']  # 地址
        telephone = business['telephone']  # 电话
        # avg_rating = business['avg_rating']  # 星级评分,5.0代表五星,4.5代表四星半,依此类推
        photo_url = business['photo_url']
        if details:
            product_grade = business['product_grade']  # noqa 产品/食品口味评价,1:一般,2:尚可,3:好,4:很好,5:非常好
            # decoration_grade = business['decoration_grade']  # 环境评价 同上
            # service_grade = business['service_grade']  # 服务评价 同上
            # avg_price = business['avg_price']  # 均价格,单位:元,若没有人均,返回-1
        text = u'<{0}|{1}> {2} {3} 距离: {4} '.format(
            url, name, address, telephone, distance)
        attach = gen_attachment(
            u'{0} {1} 距离: {2}'.format(address, telephone, distance),
            photo_url, image_type='thumb', title=name, title_link=url)
        return text, attach

    def find_businesses(self, latitude, longitude, city='上海',
                        category='美食', sort=1, limit=20, offset_type=1,
                        out_offset_type=1, platform=2):
        return self.bind_api('business', 'find_businesses',
                             locals())['businesses']

    def get_single_business(self, business_id, out_offset_type=1, platform=1):
        return self.bind_api('business', 'get_single_business',
                             locals())['businesses']

    def get_all_id_list(self, city='北京'):
        return self.bind_api('reservation', 'get_all_id_list',
                             locals())['id_list']

    def get_batch_businesses_by_id(self, business_ids, out_offset_type=1):
        if isinstance(business_ids, str):
            business_ids = business_ids.split(',')
        return self.bind_api('reservation', 'get_batch_businesses_by_id',
                             locals())['businesses']

    def find_businesses_with_reservations(self, reservation_date,
                                          reservation_time, number_of_people):
        return self.bind_api('reservation',
                             'find_businesses_with_reservations',
                             locals())['businesses']


def test(data):
    return any([i in data['message']
                for i in ['有什么美食', '大众点评', '附近美食']])


def handle(data):
    message = data['message']
    if app is None:
        appkey = '41502445'
        secret = 'f0c2cc0b4f1048bebffc1527acbaeeb8'
        ak = '18691b8e4206238f331ad2e1ca88357e'
    else:
        appkey = app.config.get('DIANPING_APPKEY')
        secret = app.config.get('DIANPING_SECRET')
        ak = app.config.get('BAIDU_AK')
    api = DianpingApi(appkey, secret)

    match = CITY_REGEX.search(message.decode('utf-8'))
    city = match.groups()[1].encode('utf-8') if match else '北京'

    match = GOODS_REGEX.search(message)
    limit = 20
    if match:
        address = next((m for m in match.groups() if m is not None), '')
        geo = address2geo(ak, address)
        if not geo:
            return '找不到这个地址的数据'
        res = api.find_businesses(geo['lat'], geo['lng'], city=city)
    else:
        business_ids = api.get_all_id_list(city)
        res = api.get_batch_businesses_by_id(business_ids[:limit])
    ret = [api.get_business_info(r) for r in res]
    return '\n'.join([r[0] for r in ret]), [r[1] for r in ret]


if __name__ == '__main__':
    print handle({'message': '酒仙桥附近美食'})
    print handle({'message': '上海市 宜山路455号有什么美食(上海uber)'})


================================================
FILE: slack_bot/plugins/earthquake.py
================================================
# !/usr/bin/env python
# -*-coding:utf-8-*-

"""
Copyright (c) 2012 Qijiang Fan <fqj1994@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""

# 地震
import urllib2
import re

description = """
最近发生的地震信息。触发条件:"地震了 [私聊]", 比如:
* 地震了
"""


def test(data):
    return '地震了' in data['message']


def jw(a, b):
    aa = ''
    bb = ''
    if int(a.replace('.', '')) > 0:
        aa = '北纬' + a + '度'
    elif int(a.replace('.', '')) < 0:
        aa = '南纬' + a.replace('-', '') + '度'
    else:
        aa = '赤道附近'
    if int(b.replace('.', '')) > 0:
        bb = '东经' + b + '度'
    elif int(b.replace('.', '')) < 0:
        bb = '西经' + b.replace('-', '') + '度'
    else:
        bb = '本初子午线附近'
    return ','.join((aa, bb))


def handle(data):
    r = urllib2.urlopen(
        'http://data.earthquake.cn/datashare/globeEarthquake_csn.html',
        timeout=5)
    t = [re.sub('(<[^>]*>|[\r\n])', '', a)
         for a in r.read().decode('gbk').encode('utf-8').split('\n')[170:178]]
    return '最近一次地震发生在%s(%s),发生时间%s,震级%s,震源深度%s千米,地震类型为%s。' %\
        (t[7], jw(t[2], t[3]), ' '.join(t[0:2]), t[5], t[4], t[6])

if __name__ == '__main__':
    print handle({'message': '地震了吗?'})


================================================
FILE: slack_bot/plugins/events.py
================================================
# coding=utf-8
from __future__ import division
from datetime import date

import jieba
import requests
from bs4 import BeautifulSoup

from slack_bot.ext import cache
from utils import check_cache

description = """
获取以下网站的活动列表:
http://segmentfault.com/events
http://huiyi.csdn.net/activity/home
http://www.chekucafe.com/Party
http://www.huodongxing.com/events
触发条件: "最近有什么活动 [城市名称] [私聊]"。比如:
* 最近有什么活动
* 最近有什么活动 北京
"""

TODAY = date.today().strftime('%m-%d')

# segmentfault
SF_URL = 'http://segmentfault.com'
SF_EVENT_URL = 'http://segmentfault.com/events?city={0}'
SF_CITIES_MAP = {
    u'\u4e0a\u6d77': 310100,
    u'\u5317\u4eac': 110100,
    u'\u5357\u4eac': 320100,
    u'\u53a6\u95e8': 350200,
    u'\u53f0\u5317': 710100,
    u'\u5408\u80a5': 340100,
    u'\u5e7f\u5dde': 440100,
    u'\u6210\u90fd': 510100,
    u'\u65b0\u52a0\u5761': 190,
    u'\u676d\u5dde': 330100,
    u'\u6b66\u6c49': 420100,
    u'\u6df1\u5733': 440300,
    u'\u70df\u53f0': 370600,
    u'\u897f\u5b89': 610100,
    u'\u957f\u6c99': 430100,
    u'\u97e9\u56fd': 198
}

# 活动行(默认是科技频道)
HDX_EVENT_URL = 'http://www.huodongxing.com/events?orderby=n&tag=%E7%A7%91%E6%8A%80&city{0}&page={1}'  # noqa
HDX_URL = 'http://www.huodongxing.com'
HDX_MAX_PAGE = 10

# 车库咖啡
CK_EVENT_URL = 'http://www.chekucafe.com/Party'
CK_URL = 'http://www.chekucafe.com'

# CSDN 最近一个月的
CSDN_EVENT_URL = 'http://huiyi.csdn.net/activity/home?c={0}&s=one_month&page={1}'  # noqa
CSDN_CITIES_MAP = {
    u'\u4e0a\u6d77': '2',
    u'\u4e91\u5357': '25',
    u'\u5185\u8499\u53e4': '7',
    u'\u5317\u4eac': '1',
    u'\u53f0\u6e7e': '34',
    u'\u5409\u6797': '9',
    u'\u56db\u5ddd': '23',
    u'\u5929\u6d25': '3',
    u'\u5b81\u590f': '29',
    u'\u5b89\u5fbd': '13',
    u'\u5c71\u4e1c': '16',
    u'\u5c71\u897f': '6',
    u'\u5e7f\u4e1c': '20',
    u'\u5e7f\u897f': '21',
    u'\u65b0\u7586': '31',
    u'\u6c5f\u82cf': '11',
    u'\u6c5f\u897f': '15',
    u'\u6cb3\u5317': '5',
    u'\u6cb3\u5357': '17',
    u'\u6d59\u6c5f': '12',
    u'\u6d77\u5357': '22',
    u'\u6e56\u5317': '18',
    u'\u6e56\u5357': '19',
    u'\u6fb3\u95e8': '33',
    u'\u7518\u8083': '28',
    u'\u798f\u5efa': '14',
    u'\u897f\u85cf': '26',
    u'\u8d35\u5dde': '24',
    u'\u8fbd\u5b81': '8',
    u'\u91cd\u5e86': '4',
    u'\u9655\u897f': '27',
    u'\u9752\u6d77': '30',
    u'\u9999\u6e2f': '32',
    u'\u9ed1\u9f99\u6c5f': '10'
}

FILTER_WORDS = [
    u'推广', u'论坛', u'产业', u'敏捷', u'管理', u'形势', u'研讨会', u'选拔',
    u'寻找', u'博览会', u'展', u'招募', u'会员', u'职业', u'嘉年华', u'内测',
    'office', u'报名', u'交流', u'讲座'
]
THRESHOLD = 0.7


def check_filter(title):
    for word in FILTER_WORDS:
        if word in title:
            return True
    return False


def get_df_events(city):
    id = SF_CITIES_MAP.get(city, SF_CITIES_MAP[u'北京'])
    r = requests.get(SF_EVENT_URL.format(id))
    soup = BeautifulSoup(r.text)
    for event in soup.findAll('div', {'class': 'widget-event'}):
        if u'报名' in event.find('a', {'class': 'btn-sm'}).text:
            h2 = event.find('h2')
            title = h2.text
            if check_filter(title):
                continue
            time, others = [i.text for i in event.findAll('li')]
            url = SF_URL + h2.find('a').attrs.get('href')
            yield title, url, time, others
        else:
            break


def get_hdx_events(city, res=[], page=1):
    r = requests.get(HDX_EVENT_URL.format(city.encode('utf-8'), page))
    soup = BeautifulSoup(r.text)
    uls = soup.findAll('ul', {'class': 'event-vertical-list-new'})
    for ul in uls:
        for li in ul.findAll('li'):
            a = li.find('h3').find('a')
            title = a.text
            if check_filter(title):
                continue
            pull = li.find('span', {'class': 'pull-right'}).text
            time = li.find(
                'div', {'class': 'time'}).text.replace(pull, '').strip()
            if time <= TODAY:
                continue
            favorites, user = pull.split('|')
            url = HDX_URL + a.attrs.get('href')
            res.append((title, url, time,
                        u'收藏: {0}| 报名: {1}'.format(favorites, user)))
    if page == HDX_MAX_PAGE:
        return res
    page += 1
    return get_hdx_events(city, res=res, page=page)


def get_ck_events(city):
    r = requests.get(CK_EVENT_URL)
    soup = BeautifulSoup(r.text)
    for li in soup.find(id='party-list').findAll('li'):
        title = li.find('h3').text
        if check_filter(title):
            continue
        url = CK_URL + li.find('a').attrs.get('href')
        tds = li.findAll('td')
        time = tds[0].text
        others = u'|'.join([td.text for td in tds[2:]])
        yield title, url, time, others


def get_csdn_events(city, res=[], page=1):
    id = CSDN_CITIES_MAP.get(city, CSDN_CITIES_MAP[u'北京'])
    r = requests.get(CSDN_EVENT_URL.format(id, page))
    soup = BeautifulSoup(r.text)
    for item in soup.find('div', {'class': 'list-wraper'}).findAll(
            'div', {'class': 'item'}):
        a = item.find('a')
        title = a.attrs.get('title')
        if check_filter(title):
            continue
        url = a.attrs.get('href')
        dd = item.findAll('dd')
        time = dd.pop(1).text
        others = u'|'.join([d.text.replace('\n', '.') for d in dd])
        res.append((title, url, time, others))

    # 判断是否有下一页
    nav = soup.find('span', {'class': 'page-nav'})
    if nav.find(
            'a', {'class': 'btn-next'}).attrs.get('href').endswith(str(page)):
        return res
    page += 1
    return get_csdn_events(city, res=res, page=page)


def check_similar(seg_, seg_lists):
    seg_len = len(seg_)
    for seg_list in seg_lists:
        seg_list_len = len(seg_list)
        len_ = seg_list_len if seg_len > seg_len else seg_len
        if len(seg_.intersection(seg_list)) / len_ > THRESHOLD:
            return True
    return False


def get_events(city):
    all_events = [
        ('SegmentFault', get_df_events(city)),
        (u'活动行', get_hdx_events(city)),
        ('csdn', get_csdn_events(city))
    ]
    if city == u'北京':
        all_events.insert(1, (u'车库咖啡', get_ck_events(city)))

    events = []
    seg_lists = []
    for org_name, org_events in all_events:
        for title, url, time, others in org_events:
            seg_ = set(jieba.cut(title))
            if check_similar(seg_, seg_lists):
                continue
            seg_lists.append(seg_)
            events.append(
                u'<{0}|[{1}] {2}> {3} {4}'.format(
                    url, org_name, title, time, others))
    return events


def test(data):
    return '最近有什么活动' in data['message']


def handle(data):
    message = data['message']
    if not isinstance(message, unicode):
        message = message.decode('utf-8')
    msg = message.split()
    if len(msg) == 1 or (len(msg) == 2 and u'私聊' in msg[1]):
        city = u'北京'
    else:
        city = msg[1]
    return '\n'.join(check_cache(cache, get_events, city))


if __name__ == '__main__':
    print handle({'message': '最近有什么活动'})
    print handle({'message': '最近有什么活动 上海'})


================================================
FILE: slack_bot/plugins/github_issue.py
================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import current_app as app
import requests

description = """
当前 github 组织下所有未关闭的 issues && PR。触发条件: "issue [私聊]"。比如:
* issue
"""

ISSUE_API = "https://api.github.com/repos/{org}/{repo}/issues"
REPO_API = "https://api.github.com/orgs/{org}/repos"


def test(data):
    return 'issue' in data['message']


def handle(data):
    org_name = app.config.get('ORG_NAME', 'python-cn')
    repos = requests.get(REPO_API.format(org=org_name)).json()
    rv = ''
    for repo in repos:
        repo_name = repo['name']
        issues_count = repo['open_issues_count']
        if issues_count != 0:
            issues = requests.get(ISSUE_API.format(org=org_name,
                                                   repo=repo_name)).json()
            rv += '*{repo_name}\n'.format(repo_name=repo_name)
            for issue in issues:
                rv += 'Issue {}:'.format(issue['number'])
                rv += issue['title'].encode('utf-8') + '\n'
                rv += issue['html_url'].encode('utf-8') + '\n'
                rv += '\n'

    return rv if rv else 'no issue'


if __name__ == '__main__':
    from flask import Flask
    app = Flask(__name__)
    app.config['org_name'] = 'python-cn'
    print handle(None)


================================================
FILE: slack_bot/plugins/help.py
================================================
# coding=utf-8
from flask import current_app

description = """
帮助信息,触发条件: "help [私聊]". 比如:
* help
"""


def format_desc(plugin, prefix='  '):
    name = plugin.__name__.split('.')[-1]
    desc = getattr(plugin, 'description', '').strip()
    # 为每行内容增加前缀
    desc = ('\n' + prefix).join(desc.split('\n'))
    return '{name}:\n{prefix}{desc}'.format(
        name=name, prefix=prefix, desc=desc
    )


def test(data):
    return 'help' in data['message']


def handle(data):
    app = current_app
    plugin_modules = app.plugin_modules if app else []
    docs = []
    for plugin in plugin_modules:
        docs.append(format_desc(plugin))
    return '\n'.join(docs)


================================================
FILE: slack_bot/plugins/movie.py
================================================
# coding=utf-8

from flask import current_app
import requests
from bs4 import BeautifulSoup

from .utils import to_pinyin, gen_attachment, upload_image
from ..utils import timeout

description = """
最近上映的电影信息。触发条件:
"[上映 | 热映 | 有什么 | 将] 电影 [上映 | 热映 | 有什么 | 将] [城市名称] [带图] [私聊]"
比如:
* 最近要将上映的电影
* 有什么电影 上海
"""

CURRENT_URL = 'http://movie.douban.com/nowplaying/{0}/'
LATER_URL = 'http://movie.douban.com/later/{0}/'


def get_later_movie_info(city, app):
    r = requests.get(LATER_URL.format(city))
    soup = BeautifulSoup(r.text)
    items = soup.find(id='showing-soon').findAll('div', {'item'})
    for i in items:
        h = i.find('h3').find('a')
        url = h.attrs['href']
        title = h.text
        content = '|'.join([li.text for li in i.findAll('li')[:4]])
        image_url = i.find('a').find('img').attrs.get('src', '')
        # SA好变态, 感觉是防盗链了,下同
        image_url = upload_image(image_url, 'thumb', app)
        yield u'<{url}|{title}> {content}'.format(**locals()), gen_attachment(
            content, image_url, image_type='thumb', title=title,
            title_link=url)


def get_current_movie_info(city, app):
    r = requests.get(CURRENT_URL.format(city))
    soup = BeautifulSoup(r.text)
    items = soup.find(id='nowplaying').find('ul', {'class': 'lists'}).findAll(
        'li', {'class': 'poster'})
    count = 0
    for i in items:
        if count >= 10:
            continue
        img = i.find('img')
        title = img.attrs.get('alt', '')
        content = '|'.join([li.text for li in i.findAll('li')[:4]])
        url = i.find('a').attrs.get('href', '')
        image_url = img.attrs.get('src', '')
        image_url = upload_image(image_url, 'thumb', app)
        count += 1
        yield u'<{url}|{title}>'.format(**locals()), gen_attachment(
            content, image_url, image_type='thumb', title=title,
            title_link=url)


def test(data):
    return '电影' in data['message'] and \
        any([i in data['message'] for i in ['上映', '热映', '有什么', '将']])


def handle(data):
    ret = []

    def timeout_handle():
        return '\n'.join([r[0] for r in ret]), [r[1] for r in ret]

    @timeout(15, default=timeout_handle)
    def _handle(data, app):
        message = data['message']
        if not isinstance(message, unicode):
            message = message.decode('utf-8')
        msg = message.split()
        if len(msg) == 1 or (len(msg) == 2 and u'私聊' in msg[1]):
            city = 'beijing'
        else:
            city = to_pinyin(msg[1])
        if u'将' in message:
            fn = get_later_movie_info
        else:
            fn = get_current_movie_info
        for r in fn(city, app):
            ret.append(r)
        return '\n'.join([r[0] for r in ret]), [r[1] for r in ret]
    app = current_app._get_current_object()
    return _handle(data, app)

if __name__ == '__main__':
    print handle({'message': '最近要将上映的电影'})
    print handle({'message': '有什么电影 上海'})


================================================
FILE: slack_bot/plugins/orz.py
================================================
# -*-coding:utf-8-*-

"""
Copyright (c) 2012 wong2 <wonderfuly@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""

# 来膜拜

import random

description = """
快来膜拜我!, 触发条件: "膜拜 | orz [私聊]"。比如:
* 膜拜
* orz
"""


def test(data):
    message = data['message']
    for word in ['膜拜', 'orz']:
        if word in message:
            return True
    return False


def handle(data):
    mobai_icon = ':mb:'
    return mobai_icon * random.randrange(1, 10)

if __name__ == '__main__':
    print test({'message': 'orz'})
    print test({'message': 'rz'})
    print handle({'message': '来膜拜'})


================================================
FILE: slack_bot/plugins/pycoders.py
================================================
# coding=utf-8
import re
from HTMLParser import HTMLParser

import requests
from bs4 import BeautifulSoup

from slack_bot.ext import cache
from utils import check_cache

description = """
Pycoders Weekly。触发条件: "pycoders [list | ISSUE_ID] [私聊]"。比如:
* pycoders
* pycoders list
* pycoders 20
"""

API = 'http://us4.campaign-archive1.com/generate-js/?u=9735795484d2e4c204da82a29&fid=1817&show=500'  # noqa
ISSUES_REGEX = re.compile(r'<div class=\\"campaign\\">(.*?)<\\/a><\\/div>')
ISSUE_REGEX = re.compile(
    ur'(\d+\\/\d+\\/\d+).*href=\\"(.*)\\" title=\\"(.*?)\\"', re.UNICODE)  # noqa
TITLE_REGEX = re.compile(ur'Issue(.*)\)(\W*?):(\W*?)(.*)', re.UNICODE)  # noqa
SPAN_REGEX = re.compile(r'<span.*>(.*)</span>')

GET_ISSUE_KEY = 'pycoders:issue:{0}'
LIST_ISSUE_KEY = 'pycoders:issue:list'


class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        self._tag = tag
        for name, value in attrs:
            if name == 'href':
                self._href = value

    def handle_data(self, data):
        self._data = data


def get_all_issues():
    r = requests.get(API)
    issues = ISSUES_REGEX.findall(r.text)
    for issue in issues:
        date_, url, title = ISSUE_REGEX.search(issue).groups()
        date_ = date_.replace('\\', '')
        url = url.replace('\\', '')
        match = TITLE_REGEX.search(title)
        if match:
            no, _, _, title = match.groups()
            no = no.strip()
            title = title.strip().replace('\u00a0', '')
        else:
            title = title.replace('Pycoders Weekly', '').strip()
            no = ''
        yield date_, url, no, title


def prase_tag(tag):
    text = ''
    parser = MyHTMLParser()
    count = 0
    block = [None] * 3  # [url, title, content]
    for t in tag.contents:
        t = unicode(t).strip()
        if not t or t in ('<br/>') or 'Shared by' in t:
            continue
        parser.feed(t)
        if parser._tag == 'h2':
            if text:
                text += '\n\n'
            text += parser._data + '\n'
        elif parser._tag == 'a':
            if not count % 2:
                block[0] = parser._href
            count += 1
        elif parser._tag == 'span':
            if t.startswith('<a'):
                match = SPAN_REGEX.search(t)
                if match:
                    block[1] = match.group(1)
            else:
                block[2] = parser._data
        if not filter(lambda x: x is None, block):
            text += u'<{0} |{1}>{2}'.format(*block) + '\n'
            block = [None] * 3
            parser._tag = None
            parser._href = None
            parser._data = None
    return text


def parse_issue_page(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.text)
    return '\n'.join([
        prase_tag(soup.findAll('td', {'class': 'mcnTextContent'})[index])
        for index in (6, 8, 9)
    ])


def get_issue(num=None):
    issues = list(get_all_issues())
    if num is None:
        num = len(issues)
    try:
        issue = list(get_all_issues())[::-1][num-1]
    except IndexError:
        return u'找不到这期咯'
    return parse_issue_page(issue[1])


def list_issues():
    return '\n'.join([
        '{0} <{1} |Issue {2}: {3}>'.format(date_, url, no, title)
        for date_, url, no, title in get_all_issues()
    ])


def test(data):
    return 'pycoder' in data['message']


def handle(data):
    msg = data['message'].split()
    if len(msg) == 1:
        return check_cache(cache, get_issue)
    elif msg[1] == 'list':
        return check_cache(cache, list_issues)
    elif msg[1].isdigit():
        return check_cache(cache, get_issue, int(msg[1]))
    return ('`pycoder`默认获得最近一次的weekly\n'
            '`pycoder list`获取全部weekly列表\n'
            '`pycoder X`获得第X次weekly')


if __name__ == '__main__':
    print handle({'message': 'pycoder'})
    print handle({'message': 'pycoder list'})
    print handle({'message': 'pycoder 167'})


================================================
FILE: slack_bot/plugins/pythonweekly.py
================================================
# coding=utf-8
import re

import requests
from bs4 import BeautifulSoup

from slack_bot.ext import cache
from utils import check_cache
from pycoders import MyHTMLParser

URL = 'http://us2.campaign-archive1.com/home/?u=e2e180baf855ac797ef407fc7&id=9e26887fc5'  # noqa
ISSUE_REGEX = re.compile(r'(\d+\/\d+\/\d+).*Issue\W+(\d+)')
GET_ISSUE_KEY = 'pythonweekly:issue:{0}'
LIST_ISSUE_KEY = 'pythonweekly:issue:list'
MAX_LENGTH = 120

description = """
Python Weekly。触发条件: "pythonweekly [list | ISSUE_ID] [私聊]"。比如:
* pythonweekly
* pythonweekly list
* pythonweekly 20
"""


def get_all_issues():
    r = requests.get(URL)
    soup = BeautifulSoup(r.text)
    for li in soup.findAll('li', {'class': 'campaign'}):
        url = li.find('a').attrs.get('href')
        time, no = ISSUE_REGEX.search(li.text).groups()
        yield url, no, time


def parse_issue_page(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.text)
    tag = soup.find('td', {'class': 'defaultText'})
    text = []
    parser = MyHTMLParser()
    start = False
    block = [None] * 3  # [url, title, content]
    for t in tag.contents:
        t = unicode(t).strip()
        if not t or t in ('<br/>'):
            continue
        parser.feed(t)
        if parser._data == 'News':
            start = True
        if not start:
            continue
        if parser._tag == 'a':
            block[1] = parser._data
            block[0] = parser._href
        elif '<' not in t:
            if parser._data < MAX_LENGTH:
                block[2] = parser._data
            else:
                block[2] = parser._data[:MAX_LENGTH] + '...'
        elif parser._tag == 'span':
            text.append('\n{}'.format(parser._data))
        parser._tag = None
        parser._href = None
        parser._data = None
        if not filter(lambda x: x is None, block):
            text.append(u'<{0} |{1}>{2}'.format(*block))
            block = [None] * 3
    return '\n'.join(text)


def list_lastest_issues():
    return '\n'.join([
        '<{0} |Issue {1}: {2}>'.format(url, no, time)
        for url, no, time in get_all_issues()
    ])


def get_issue_pw(num=None):
    issues = list(get_all_issues())
    if num is None:
        num = len(issues)
    try:
        issue = list(get_all_issues())[::-1][num-1]
    except IndexError:
        return u'找不到这期咯'
    return parse_issue_page(issue[0])


def test(data):
    return all([i in data['message'] for i in ['python', 'weekly']])


def handle(data):
    msg = data['message'].split()
    if len(msg) == 1:
        return check_cache(cache, get_issue_pw)
    elif msg[1] == 'list':
        return check_cache(cache, list_lastest_issues)
    elif msg[1].isdigit():
        return check_cache(cache, get_issue_pw, int(msg[1]))
    return ('`pythonweekly`默认获得最近一次的weekly\n'
            '`pythonweekly list`获取最近20个weekly列表(找不到更早的了)\n'
            '`pythonweekly X`获得倒数第X次weekly(X不能超过20)')


if __name__ == '__main__':
    print handle({'message': 'pythonweekly'})
    print handle({'message': 'pythonweekly list'})
    print handle({'message': 'pythonweekly 1'})


================================================
FILE: slack_bot/plugins/qiubai.py
================================================
# coding:utf-8

"""
Copyright (c) 2013 Xiangyu Ye<yexiangyu1985@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""

description = """
糗事百科TOP10。触发条件: "糗百 | 笑话 [私聊]"。比如:
* 糗百
* 笑话
"""

# 糗事百科TOP10
import urllib2
import re
import time
import random

from slack_bot.ext import cache

key = time.strftime('%y-%m-%d')


def test(data):
    return any(w in data['message'] for w in ['糗百', '笑话'])


def handle(data):
    if cache is not None:
        r = cache.get(key)
        if r:
            return random.choice(r)
    r = urllib2.urlopen('http://feedproxy.feedburner.com/qiubai', timeout=60)
    p = r.read()
    r = re.findall('<\!\[CDATA\[<p>(.*)<br/>', p)
    if r:
        if cache is not None:
            cache.set(key, r, 1800)
        return random.choice(r)
    else:
        raise Exception


if __name__ == '__main__':
    print handle({'message': '糗百'})
    print handle({'message': '笑话'})


================================================
FILE: slack_bot/plugins/simsimi.py
================================================
# -*-coding:utf-8-*-

"""
Copyright (c) 2012 wong2 <wonderfuly@gmail.com>
Copyright (c) 2012 hupili <hpl1989@gmail.com>

Original Author:
    Wong2 <wonderfuly@gmail.com>
Changes Statement:
    Changes made by Pili Hu <hpl1989@gmail.com> on
    Jan 13 2013:
        Support Keepalive by using requests.Session

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""


# 从simsimi读数据

import sys
sys.path.append('..')

import requests
import random

try:
    from settings import SIMSIMI_KEY
except:
    SIMSIMI_KEY = '50c086cb-5ea3-4190-bdd6-69787a540ec4'

description = """
色色的小黄鸡。触发条件:所有未触发其他插件的内容。
"""

COOKIE = """
sid=s%3AcsxS39Tq1oLXQj5WKdBN7UZz.T%2FdtU%2BGkt056rKQb
%2BwmwD0iJXguRCsyRsv6745ftwfk; Filtering=0.0; Filtering=0.0;
isFirst=1; isFirst=1; simsimi_uid=102256985; simsimi_uid=102256985;
selected_nc_name=Chinese%20%u2013%20Simplified%20%28%u7C21%u9AD4%29;
selected_nc_name=Chinese%20%u2013%20Simplified%20%28%u7C21%u9AD4%29;
simsimi_makeup=undefined; simsimi_makeup=undefined; selected_nc=ch;
selected_nc=ch; __utmt=1; __utma=119922954.1015526052.1433822720.
1433826650.1433836017.4; __utmb=119922954.8.9.1433836034315;
__utmc=119922954; __utmz=119922954.1433822720.1.1.utmcsr=(direct)
|utmccn=(direct)|utmcmd=(none)
"""


class SimSimi:

    def __init__(self):

        self.session = requests.Session()

        self.chat_url = (
            'http://www.simsimi.com/func/reqN?lc=ch&ft=0.0&req={0}'
            '&fl=http%3A%2F%2Fwww.simsimi.com%2Ftalk.htm&reqType='
        )
        self.api_url = ('http://sandbox.api.simsimi.com/request.p?'
                        'key=%s&lc=ch&ft=1.0&text=%s')

        if not SIMSIMI_KEY:
            self.initSimSimiCookie()

    def initSimSimiCookie(self):
        self.session.headers.update(
            {'User-Agent': ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5)'
                            ' AppleWebKit/537.36 (KHTML, like Gecko)'
                            ' Chrome/43.0.2357.81 Safari/537.36')}
        )
        self.session.get('http://www.simsimi.com/talk.htm')
        self.session.headers.update(
            {'Referer': 'http://www.simsimi.com/talk.htm'})
        self.session.get('http://www.simsimi.com/talk.htm?lc=ch')
        self.session.headers.update(
            {'Referer': 'http://www.simsimi.com/talk.htm?lc=ch'})
        self.session.headers.update(
            {'Accept': 'application/json, text/javascript, */*; q=0.01'})
        self.session.headers.update({'Accept-Encoding': 'gzip, deflate, sdch'})
        self.session.headers.update(
            {'Accept-Language': 'en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4'})
        self.session.headers.update({'Cache-Control': 'no-cache'})
        self.session.headers.update({'Connection': 'keep-alive'})
        self.session.headers.update(
            {'Content-Type': 'application/json; charset=utf-8'})
        self.session.headers.update({'Host': 'www.simsimi.com'})
        self.session.headers.update({'Pragma': 'no-cache'})
        self.session.headers.update({'X-Requested-With': 'XMLHttpRequest'})
        self.session.headers.update(
            {'Cookie': COOKIE})

    def getSimSimiResult(self, message, method='normal'):
        if method == 'normal':
            print self.chat_url.format(message)
            r = self.session.get(self.chat_url.format(message))
        else:
            url = self.api_url % (SIMSIMI_KEY, message)
            r = requests.get(url)
        return r

    def chat(self, message=''):
        if message:
            r = self.getSimSimiResult(
                message, 'normal' if not SIMSIMI_KEY else 'api')
            try:
                answer = r.json()['response'].encode('utf-8')
                return answer
            except:
                return random.choice(['呵呵', '。。。', '= =', '=。='])
        else:
            return '叫我干嘛'

simsimi = SimSimi()


def test(data):
    return True


def handle(data):
    return simsimi.chat(data['message']), None

if __name__ == '__main__':
    print handle({'message': '最后一个问题'})
    print handle({'message': '还有一个问题'})
    print handle({'message': '其实我有三个问题'})


================================================
FILE: slack_bot/plugins/toutiao.py
================================================
# coding=utf-8

import requests

from utils import datetime2timestamp, gen_attachment, trunc_utf8

CHANNEL_MAPS = {
    '推荐': '__all__',
    '热点': 'news_hot',
    '社会': 'news_society',
    '娱乐': 'news_entertainment',
    '科技': 'news_tech',
    '军事': 'news_military',
    '美食': 'news_food',
    '游戏': 'news_game',
    '体育': 'news_sports'
}

description = """
今日头条。触发条件: "头条 [%s] [带图] [私聊]"。比如:
* 头条
* 头条 娱乐
""" % ' | '.join(CHANNEL_MAPS.keys())


API = 'http://toutiao.com/api/article/recent/?source=2&count=20&category={0}&max_behot_time={1}&utm_source=toutiao&offset=0'  # noqa


def get_content(channel):
    category = CHANNEL_MAPS.get(channel)
    r = requests.get(API.format(category, datetime2timestamp()))
    data = r.json()['data']

    for i in data:
        text = (u'<{seo_url}|{title}> 赞{bury_count} 踩{digg_count} - '
                '{source} {datetime}').format(**i)
        image_url = i.get('middle_image', '')
        if isinstance(image_url, dict):
            image_url = image_url['url']
        attach = gen_attachment(trunc_utf8(i['abstract']), image_url,
                                image_type='thumb', title=i['title'],
                                title_link=i['seo_url'], fallback=False)
        yield text, attach


def test(data):
    return any(w in data['message'] for w in ['toutiao', '头条'])


def handle(data):
    msg = data['message'].split()
    channel = '推荐' if len(msg) == 1 else msg[1].strip()
    if channel not in CHANNEL_MAPS:
        return '目前可选的频道包含: {}'.format('|'.join(CHANNEL_MAPS.keys()))
    ret = [r for r in get_content(channel)]
    return '\n'.join([r[0] for r in ret]), [r[1] for r in ret]


if __name__ == '__main__':
    print handle({'message': '头条'})


================================================
FILE: slack_bot/plugins/travel.py
================================================
# coding=utf-8
import re

from flask import current_app

from baidumap import travel_city, travel_attractions
from weather import get_city
from utils import chinese2digit, to_pinyin

description = '''
国内旅游推荐/景点介绍/X日游。触发条件: "xx旅游推荐|颐和园景点介绍|xx3(/三)日游"。比如:
* 沈阳旅游推荐
* 景点介绍颐和园
* 颐和园景点介绍
* 北京3日游
'''

ATTRACTIONS_REGEX = re.compile(r'(.*?)景点介绍(.*?)')
CITY_REGEX = re.compile(r'(旅游推荐)')
DAYS_REGEX = re.compile(r'(.*)日游')


def get_desc(regex, message):
    match = regex.search(message)
    if match:
        return next((m for m in match.groups() if m), None)


def get_itinerary(res, details=False):
    if not res['itineraries']:
        return '没找到对应的行程'
    text = []
    if details:
        text.append(res['description'])
    for i in res['itineraries']:
        text.append(u'类型: {0}: {1}'.format(i['name'], i['description']))
        for index, it in enumerate(i['itineraries'], 1):
            text.append(
                u'第{}天  '.format(index) + u' ->'.join(
                    [p['name'] for p in it['path']]))
            for t in ['description', 'dinning', 'accommodation']:
                text.append(it[t])
        text.append('\n')
    return '\n'.join(text)


def test(data):
    return get_city(data) and any([
        regex.search(data['message']) for regex in [CITY_REGEX, DAYS_REGEX]]) \
        or ATTRACTIONS_REGEX.search(data['message'])


def handle(data):
    app = current_app
    if app is None:
        ak = '18691b8e4206238f331ad2e1ca88357e'
    else:
        ak = app.config.get('BAIDU_AK')
    message = data['message']
    location = get_city(data)
    if location:
        message = message.replace(location.encode('utf-8'), '')
    days = get_desc(DAYS_REGEX, message)
    if days:
        if not isinstance(days, int):
            days = chinese2digit(days)
        res = travel_city(ak, location, days)
        return get_itinerary(res), None
    city = get_desc(CITY_REGEX, message)
    if city:
        res = travel_city(ak, location)
        return get_itinerary(res, details=True), None
    attractions = get_desc(ATTRACTIONS_REGEX, message)
    if attractions:
        return travel_attractions(ak, to_pinyin(attractions)), None
    return '没找到对应的旅游行程', None

if __name__ == '__main__':
    print handle({'message': '北京三日游'})
    print handle({'message': '北京旅游推荐'})
    print handle({'message': '颐和园景点介绍'})


================================================
FILE: slack_bot/plugins/utils.py
================================================
# coding=utf-8
import os
import re
import random
import shutil
import calendar
from datetime import datetime

from flask import current_app
import pytz
import requests
from slacker import Slacker
from pypinyin import lazy_pinyin

from consts import ONE_DAY, COLORS

CANVAS_REGEX = re.compile(r'base64,(.*)')


def check_cache(cache, fn, *args, **kwargs):
    timeout = kwargs.get('timeout', ONE_DAY)
    return (cache.cached(timeout=timeout)(fn)
            if cache is not None else fn)(*args, **kwargs)


def timestamp2str(timestamp, fmt='%H:%M:%S', timezone='Asia/Shanghai'):
    dt = datetime.utcfromtimestamp(float(timestamp)).replace(tzinfo=pytz.utc)
    tz = pytz.timezone(timezone)
    return tz.normalize(dt.astimezone(tz)).strftime(fmt)


def datetime2timestamp(dt=None, timezone='Asia/Shanghai'):
    if dt is None:
        dt = datetime.now()
    tz = pytz.timezone(timezone)
    dt = dt.replace(tzinfo=pytz.utc).astimezone(tz)
    return calendar.timegm(dt.timetuple())


def check_time(dt=None, timezone='Asia/Shanghai'):
    if dt is None:
        dt = datetime.now()
    tz = pytz.timezone(timezone)
    dt = dt.replace(tzinfo=pytz.utc).astimezone(tz)
    return 'day' if 6 <= dt.hour <= 18 else 'night'


def to_pinyin(word):
    if not isinstance(word, unicode):
        word = word.decode('utf-8')
    return ''.join(lazy_pinyin(word))


def chinese2digit(ch):
    try:
        return ['一', '二', '三', '四', '五', '六', '七',
                '八', '九'].index(ch) + 1
    except ValueError:
        return ch


def upload_image(canvas_or_url, image_type, app=None, filename=None,
                 tmp_dir=None, deleted=False):
    here = os.path.abspath(os.path.dirname(__file__))
    if tmp_dir is None:
        tmp_dir = os.path.join(here, 'data')
    match = CANVAS_REGEX.search(canvas_or_url)
    if match:
        imgstr = match.group(1)
        if filename is None:
            filename = os.path.join(tmp_dir, '{}.png'.format(imgstr[:20]))
        output = open(filename, 'wb')
        output.write(imgstr.decode('base64'))
        output.close()
    else:
        r = requests.get(canvas_or_url, stream=True)
        if filename is None:
            filename = canvas_or_url.rsplit('/', 1)[1]
        with open(filename, 'wb') as f:
            r.raw.decode_content = True
            shutil.copyfileobj(r.raw, f)

    if image_type == 'thumb':
        image_type = 'thumb_360'
    if app is None:
        token = 'xoxp-4231087425-4231087427-4463321974-03a74ae'
    else:
        token = app.config.get('SLACK_CHAT_TOKEN')
    slack = Slacker(token)
    ret = slack.files.upload(filename)
    if deleted:
        os.remove(filename)
    try:
        return ret.body['file'][image_type]
    except KeyError:
        return ret.body['file']['url']


def check_canvas(image_url, image_type):
    match = CANVAS_REGEX.search(image_url)
    if match:
        return upload_image(image_url, image_type)
    else:
        return image_url


def convert2unicode(s):
    if not isinstance(s, unicode):
        return s.decode('utf-8')
    return s


def convert2str(s):
    if isinstance(s, unicode):
        return s.encode('utf-8')
    return s


def gen_attachment(text, image_url='', image_type='url', title='',
                   title_link='', color='random', fallback=True):
    if color == 'random':
        color = random.choice(COLORS)
    key = 'thumb_url' if image_type == 'thumb' else 'image_url'
    attachment = {'text': text, 'title_link': title_link, 'color': color,
                  key: check_canvas(image_url, image_type),
                  'title': title}
    if fallback:
        attachment.update({
            'fallback': u'{0} {1}'.format(
                convert2unicode(title), convert2unicode(text))
        })
    return attachment


def trunc_utf8(s, length=50):
    s = convert2unicode(s)
    if s > length:
        s = s[:length] + '...'
    return s


def replaced(message, rep_words):
    for word in rep_words:
        message = message.replace(word, '', 1)
    return message


================================================
FILE: slack_bot/plugins/v2ex.py
================================================
# coding=utf-8
import cgi
from datetime import datetime

from lxml import etree
import requests

from slack_bot.ext import cache
from consts import ONE_DAY, ONE_MINUTE

NODES = ['linux', 'macosx', 'create', 'android', 'python', 'programmer', 'vim',
         'jobs', 'react', 'beijing', 'redis', 'mongodb', 'tornado', 'emacs',
         'django', 'flask', 'go', 'lisp']
TAGS = ['title', 'published', 'updated', 'content']
MAX_FEEDS_LEN = 50
FEED_URL = 'https://www.v2ex.com/feed/{0}.xml'
TOPIC_URL = 'http://www.v2ex.com/t/{0}'
NODE_URL = 'http://www.v2ex.com/go/{0}'
NODE_KEY = 'v2ex:node:{0}'
TOPIC_KEY = 'v2ex:topic:{0}'
NODE_UPDATE_KEY = 'v2ex:update:{0}'  # node 缓存时间根据发布topic频繁程度而不同
description = """
v2ex feed. 触发条件: "v2ex [%s] [私聊]". 比如:
* v2ex
* v2ex python
""" % ' | '.join(NODES)


def get_updated_interval(node_name, feeds, default=ONE_DAY):
    updated_times = []
    for id in feeds:
        topic = cache.get(TOPIC_KEY.format(id))
        if topic:
            updated_times.append(topic['updated'])
        else:
            print 'topic {} not cached!'.format(id)
    min = default
    for i in range(len(updated_times) - 1):
        sec = (updated_times[i] - updated_times[i + 1]).total_seconds()
        if sec < min:
            min = sec
        if min < ONE_MINUTE:
            min = ONE_MINUTE
            break
    return min


def fetch2cache(node_name):
    print 'Fetch {}'.format(node_name)
    r = requests.get(FEED_URL.format(node_name), verify=False)
    root = etree.fromstring(r.text.encode('utf-8'))
    entries = root.findall('{http://www.w3.org/2005/Atom}entry')
    node_key = NODE_KEY.format(node_name)
    feeds = cache.get(node_key) or []
    new_feeds = []
    for entry in entries:
        topic = {}
        id = entry[2].text.rpartition('/')[-1]
        key = TOPIC_KEY.format(id)
        for el in entry:
            for tag in TAGS:
                if el.tag.endswith(tag):
                    res = el.text
                    if tag in ('published', 'updated'):
                        res = datetime.strptime(res, '%Y-%m-%dT%H:%M:%SZ')
                    topic[tag] = res
            topic['node'] = node_name
        cache.set(key, topic, ONE_DAY)
        new_feeds.append(id)
    if new_feeds:
        new_feeds += feeds[:MAX_FEEDS_LEN - len(new_feeds)]
        interval = get_updated_interval(node_name, new_feeds)
        cache.set(node_key, new_feeds, interval)


def fetch(force=False):
    ids = set()
    for node in NODES:
        node_key = NODE_KEY.format(node)
        res = cache.get(node_key)
        if res and not force:
            ids.update(res)
            continue
        fetch2cache(node)
        ids.update(cache.get(node_key))
    ids = list(set(ids))

    def _key(id):
        topic = cache.get(TOPIC_KEY.format(id))
        if not topic:
            return datetime(1970, 1, 1)
        return topic['published']

    return sorted(ids, key=_key, reverse=True)[:MAX_FEEDS_LEN]


def test(data):
    return data['message'].startswith('v2ex')


def handle(data):
    message = data['message']
    ids = fetch(force=(True if u'刷新' in message else False))
    contents = []
    for id in ids:
        topic = cache.get(TOPIC_KEY.format(id))
        if not topic:
            continue
        node = topic['node']
        msg = u'<{0}|{1} [{2}]>   <{3}|{4}>'.format(TOPIC_URL.format(id),
                                                    cgi.escape(topic['title']),
                                                    topic['published'],
                                                    NODE_URL.format(node),
                                                    node)
        contents.append(msg)
    return '\n'.join(contents)


if __name__ == '__main__':
    pass
    # 由于更换了cache引入方式,这里的测试暂不可用,如有需要在`python manager send v2ex`
    # from flask import Flask
    # from flask_cache import Cache
    # app = Flask(__name__)
    # cache = Cache()
    # cache.init_app(app, config={'CACHE_TYPE': 'simple'})
    # with app.app_context():
    #     print handle({'message': 'v2ex'})


================================================
FILE: slack_bot/plugins/weather.py
================================================
# coding=utf-8

# 天气
import os
import re
import cPickle as pickle

from flask import current_app

from baidumap import weather
from utils import gen_attachment, check_time


description = """
今天的天气情况, 触发条件: "[城市名称] 天气 [私聊]"。比如:
* 天气
* 上海天气
"""

DAY = {0: u'今天', 1: u'明天', 2: u'后天'}
TEMPERATURE_REGEX = re.compile(ur'(\d+)℃')


def get_city(data):
    cityidDict = pickle.load(file(
        os.path.join(os.path.dirname(__file__),
                     'data' + os.path.sep + 'cityid'), 'r'))
    return next(
        (c for c in cityidDict if c.encode('utf8') in data['message']), False)


def test(data):
    return '天气' in data['message'] and get_city(data)


def handle(data):
    app = current_app
    if app is None:
        ak = '18691b8e4206238f331ad2e1ca88357e'
    else:
        ak = app.config.get('BAIDU_AK')
    city = get_city(data)
    if not city:
        return '不会自己去看天气预报啊'
    res = weather(ak, city)[:3]
    ret = []
    attaches = []
    for idx, day in enumerate(res):
        if idx == 0:
            current = TEMPERATURE_REGEX.search(day['date']).groups()[0]
            text = u'{0}: {1} {2} {3} 温度: {4}'.format(
                DAY[idx], current, day['weather'],
                day['wind'], day['temperature'])
        else:
            text = u'{0}: {1} {2} 温度: {3}'.format(
                DAY[idx], day['weather'],
                day['wind'], day['temperature'])
        ret.append(text)
        type = 'dayPictureUrl' if check_time() == 'day' else 'dayPictureUrl'
        attaches.append(gen_attachment(text, day[type], image_type='thumb',
                                       title=u'{}天气预报'.format(city),
                                       title_link=''))
    return '\n'.join(ret), attaches


if __name__ == '__main__':
    print test({'message': '天气怎么样'})
    print test({'message': '北京天气怎么样'})
    print handle({'message': '北京天气怎么样'})


================================================
FILE: slack_bot/plugins/wikipedia.py
================================================
# -*-coding:utf-8-*-

"""
Copyright (c) 2012 yangzhe1991 <ud1937@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

    The above copyright notice and this permission notice shall be
    included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""

# 维基百科

from bs4 import BeautifulSoup

import requests
import re

description = """
维基百科。触发条件: "什么是 内容 [私聊]"。比如:
* 什么是薛定谔方程啊
* 什么是CSS
"""


def test(data):
    return '什么是' in data['message']


def handle(data):
    m = re.search('(?<=什么是)(.+?)(?=啊|那|呢|哈|!|。|?|\?|\s|\Z)', data['message'])
    if m and m.groups():
        return wikipedia(m.groups()[0])
    raise Exception


def wikipedia(title):
    r = requests.get('http://zh.wikipedia.org/wiki/{0}'.format(title),
                     timeout=10)
    soup = BeautifulSoup(r.text)
    result = soup.find(id='mw-content-text').find('p').text
    return result if result else '我还不知道哎'

if __name__ == '__main__':
    for message in ['什么是SVM  ????', '什么是薛定谔方程啊', '什么是CSS?']:
        data = {'message': message}
        print message, test(data)
        if test(data):
            print handle(data)


================================================
FILE: slack_bot/settings.py
================================================
# coding=utf-8

# debug模式主要用在gunicorn启动的时候可能看到错误堆栈
DEBUG = True
SECRET_KEY = 'o\xdd\x02I\x0b\xbbBP4\x97\xab\xe0GF\xfba\x14_\x03\xa9\xe8\xfa\xf8c'   # noqa

# clask chat token 注册地址: https://api.slack.com/web
SLACK_CHAT_TOKEN = 'xoxp-4231087425-4231087427-4463321974-03a74a'
# 你希望slack的outgoing-webhook调用你的回调的路由
SLACK_CALLBACK = '/slack_callback'
# 使用Github-issue插件需要指定组织的地址
ORG_NAME = 'python-cn'
# 百度地图api key, 注册地址: http://lbsyun.baidu.com/apiconsole/key
BAIDU_AK = '18691b8e4206238f331ad2e1ca88357e'
# simsim key, 注册地址: http://developer.simsimi.com/
SIMSIMI_KEY = '50c086cb-5ea3-4190-bdd6-69787a540ec4'
# 大众点评应用, 注册地址: http://developer.dianping.com/dashboard/info/app
DIANPING_APPKEY = '41502445'
DIANPING_SECRET = 'f0c2cc0b4f1048bebffc1527acbaeeb8'

# Flask-cache的类型, 默认为SimpleCache
CACHE_TYPE = 'simple'
# 假如使用RedisCache, 也就是CACHE_TYPE = 'redis'需要配置CACHE_REDIS_URL
CACHE_REDIS_URL = 'redis://user:password@localhost:6379/0'

# 使用`python manage.py send`时候的模拟数据
TEST_DATA = {
    'token': 'jLGMzrZn3P1lS2sD848KpPuN',
    'text': 'text',
    'team_id': 'T0001',
    'team_domain': 'example',
    'channel_id': 'C2147483705',
    'channel_name': 'channel_name',
    'timestamp': '1355517523',
    'user_id': 'U2147483697',
    'user_name': 'Steve',
    'trigger_word': '',
}

try:
    from local_settings import *  # noqa
except ImportError:
    print('You may need rename local_settings.py.example '
          'to local_settings.py, then update your settings')


================================================
FILE: slack_bot/utils.py
================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from multiprocessing import TimeoutError
from multiprocessing.pool import ThreadPool
from functools import wraps


def timeout(seconds, default="timeout"):
    def decorator(fn):
        @wraps(fn)
        def wrapper(*args, **kwargs):
            pool = ThreadPool(processes=1)
            async_result = pool.apply_async(fn, args=args, kwds=kwargs)
            try:
                return async_result.get(seconds)
            except TimeoutError:
                if callable(default):
                    return default()
                return default
        return wrapper
    return decorator


================================================
FILE: wsgi.py
================================================
# coding=utf-8
from slack_bot.app import create_app

app = create_app()
Download .txt
gitextract_wzu9i0ah/

├── .gitignore
├── LICENSE
├── Procfile
├── README.md
├── manage.py
├── requirements.txt
├── runtime.txt
├── slack_bot/
│   ├── __init__.py
│   ├── app.py
│   ├── ext.py
│   ├── local_settings.py.example
│   ├── plugins/
│   │   ├── __init__.py
│   │   ├── airpollution.py
│   │   ├── baidumap.py
│   │   ├── bj_bus.py
│   │   ├── consts.py
│   │   ├── data/
│   │   │   ├── baidu_tag.pkl
│   │   │   ├── bjbus_lines.pkl
│   │   │   └── cityid
│   │   ├── dianping.py
│   │   ├── earthquake.py
│   │   ├── events.py
│   │   ├── github_issue.py
│   │   ├── help.py
│   │   ├── movie.py
│   │   ├── orz.py
│   │   ├── pycoders.py
│   │   ├── pythonweekly.py
│   │   ├── qiubai.py
│   │   ├── simsimi.py
│   │   ├── toutiao.py
│   │   ├── travel.py
│   │   ├── utils.py
│   │   ├── v2ex.py
│   │   ├── weather.py
│   │   └── wikipedia.py
│   ├── settings.py
│   └── utils.py
└── wsgi.py
Download .txt
SYMBOL INDEX (139 symbols across 23 files)

FILE: manage.py
  function send (line 18) | def send(text):

FILE: slack_bot/app.py
  function create_app (line 22) | def create_app(config=None):
  function callback (line 43) | def callback(kwargs):
  function _filter (line 78) | def _filter(line):

FILE: slack_bot/plugins/airpollution.py
  function test (line 48) | def test(data):
  function get_desc (line 56) | def get_desc(cityname, cityshort):
  function handle (line 86) | def handle(data):

FILE: slack_bot/plugins/baidumap.py
  function address2geo (line 39) | def address2geo(ak, address, city=u'北京'):
  function geo2address (line 52) | def geo2address(ak, location):
  function place_suggestion (line 61) | def place_suggestion(ak, pos):
  function place_direction (line 67) | def place_direction(ak, origin, destination, mode='transit', tactics=11,
  function point (line 144) | def point(ak, keyword, city=u'北京'):
  function travel_attractions (line 152) | def travel_attractions(ak, id):
  function travel_city (line 168) | def travel_city(ak, location=u'北京', day='all'):
  function local (line 175) | def local(ak, tag, keyword, location=u'北京', radius=3000, city=u'北京'):
  function weather (line 183) | def weather(ak, location=u'北京'):
  function test (line 190) | def test(data):
  function handle (line 197) | def handle(data):

FILE: slack_bot/plugins/bj_bus.py
  class Cipher (line 26) | class Cipher(object):
    method __init__ (line 29) | def __init__(self, key):
    method new_from_key (line 33) | def new_from_key(key):
    method _make_translate_table (line 36) | def _make_translate_table(self):
    method translate (line 47) | def translate(self, raw):
    method decrypt (line 61) | def decrypt(self, cipher_text):
    method encrypt (line 64) | def encrypt(self, plain_text):
  function decrypt_busline_etree (line 68) | def decrypt_busline_etree(et):
  function decrypt_bus_realtime_info (line 91) | def decrypt_bus_realtime_info(bus):
  function etree_xpath_children_to_dict_list (line 102) | def etree_xpath_children_to_dict_list(et, path):
  function xpath_etree_children_to_dict_list (line 106) | def xpath_etree_children_to_dict_list(path, et):
  class BeijingBusApi (line 122) | class BeijingBusApi(object):
    method __init__ (line 125) | def __init__(self):
    method check_update (line 144) | def check_update(self):
    method api_open (line 155) | def api_open(self, path, url_base=u'http://mc.aibang.com'):
    method query_busline_id_by_name (line 159) | def query_busline_id_by_name(self, name):
    method get_update_flags (line 170) | def get_update_flags(self):
    method get_busline_info (line 180) | def get_busline_info(self, id):
    method get_busline_realtime_info (line 194) | def get_busline_realtime_info(self, id, no):
  function check_update (line 210) | def check_update(b):
  function _get_busline_info_by_name (line 215) | def _get_busline_info_by_name(busline):
  function get_site_id_by_name (line 223) | def get_site_id_by_name(busline, name):
  function get_busline_info (line 230) | def get_busline_info(busline):
  function get_busline_realtime_info (line 239) | def get_busline_realtime_info(busline, site):
  function test_query_busline (line 259) | def test_query_busline(message):
  function test_query_realtime (line 263) | def test_query_realtime(message):
  function test (line 267) | def test(data):
  function handle (line 274) | def handle(data, **kwargs):

FILE: slack_bot/plugins/dianping.py
  function real_name (line 24) | def real_name(name):
  function concat_params (line 31) | def concat_params(appkey, secret, params):
  class DianpingApi (line 47) | class DianpingApi(object):
    method __init__ (line 48) | def __init__(self, appkey, secret):
    method bind_api (line 51) | def bind_api(self, path, subpath, params):
    method get_business_info (line 57) | def get_business_info(self, business, details=False):
    method find_businesses (line 82) | def find_businesses(self, latitude, longitude, city='上海',
    method get_single_business (line 88) | def get_single_business(self, business_id, out_offset_type=1, platform...
    method get_all_id_list (line 92) | def get_all_id_list(self, city='北京'):
    method get_batch_businesses_by_id (line 96) | def get_batch_businesses_by_id(self, business_ids, out_offset_type=1):
    method find_businesses_with_reservations (line 102) | def find_businesses_with_reservations(self, reservation_date,
  function test (line 109) | def test(data):
  function handle (line 114) | def handle(data):

FILE: slack_bot/plugins/earthquake.py
  function test (line 37) | def test(data):
  function jw (line 41) | def jw(a, b):
  function handle (line 59) | def handle(data):

FILE: slack_bot/plugins/events.py
  function check_filter (line 103) | def check_filter(title):
  function get_df_events (line 110) | def get_df_events(city):
  function get_hdx_events (line 127) | def get_hdx_events(city, res=[], page=1):
  function get_ck_events (line 152) | def get_ck_events(city):
  function get_csdn_events (line 166) | def get_csdn_events(city, res=[], page=1):
  function check_similar (line 191) | def check_similar(seg_, seg_lists):
  function get_events (line 201) | def get_events(city):
  function test (line 224) | def test(data):
  function handle (line 228) | def handle(data):

FILE: slack_bot/plugins/github_issue.py
  function test (line 15) | def test(data):
  function handle (line 19) | def handle(data):

FILE: slack_bot/plugins/help.py
  function format_desc (line 10) | def format_desc(plugin, prefix='  '):
  function test (line 20) | def test(data):
  function handle (line 24) | def handle(data):

FILE: slack_bot/plugins/movie.py
  function get_later_movie_info (line 22) | def get_later_movie_info(city, app):
  function get_current_movie_info (line 39) | def get_current_movie_info(city, app):
  function test (line 60) | def test(data):
  function handle (line 65) | def handle(data):

FILE: slack_bot/plugins/orz.py
  function test (line 37) | def test(data):
  function handle (line 45) | def handle(data):

FILE: slack_bot/plugins/pycoders.py
  class MyHTMLParser (line 29) | class MyHTMLParser(HTMLParser):
    method handle_starttag (line 30) | def handle_starttag(self, tag, attrs):
    method handle_data (line 36) | def handle_data(self, data):
  function get_all_issues (line 40) | def get_all_issues():
  function prase_tag (line 58) | def prase_tag(tag):
  function parse_issue_page (line 92) | def parse_issue_page(url):
  function get_issue (line 101) | def get_issue(num=None):
  function list_issues (line 112) | def list_issues():
  function test (line 119) | def test(data):
  function handle (line 123) | def handle(data):

FILE: slack_bot/plugins/pythonweekly.py
  function get_all_issues (line 25) | def get_all_issues():
  function parse_issue_page (line 34) | def parse_issue_page(url):
  function list_lastest_issues (line 70) | def list_lastest_issues():
  function get_issue_pw (line 77) | def get_issue_pw(num=None):
  function test (line 88) | def test(data):
  function handle (line 92) | def handle(data):

FILE: slack_bot/plugins/qiubai.py
  function test (line 43) | def test(data):
  function handle (line 47) | def handle(data):

FILE: slack_bot/plugins/simsimi.py
  class SimSimi (line 66) | class SimSimi:
    method __init__ (line 68) | def __init__(self):
    method initSimSimiCookie (line 82) | def initSimSimiCookie(self):
    method getSimSimiResult (line 109) | def getSimSimiResult(self, message, method='normal'):
    method chat (line 118) | def chat(self, message=''):
  function test (line 133) | def test(data):
  function handle (line 137) | def handle(data):

FILE: slack_bot/plugins/toutiao.py
  function get_content (line 29) | def get_content(channel):
  function test (line 46) | def test(data):
  function handle (line 50) | def handle(data):

FILE: slack_bot/plugins/travel.py
  function get_desc (line 23) | def get_desc(regex, message):
  function get_itinerary (line 29) | def get_itinerary(res, details=False):
  function test (line 47) | def test(data):
  function handle (line 53) | def handle(data):

FILE: slack_bot/plugins/utils.py
  function check_cache (line 20) | def check_cache(cache, fn, *args, **kwargs):
  function timestamp2str (line 26) | def timestamp2str(timestamp, fmt='%H:%M:%S', timezone='Asia/Shanghai'):
  function datetime2timestamp (line 32) | def datetime2timestamp(dt=None, timezone='Asia/Shanghai'):
  function check_time (line 40) | def check_time(dt=None, timezone='Asia/Shanghai'):
  function to_pinyin (line 48) | def to_pinyin(word):
  function chinese2digit (line 54) | def chinese2digit(ch):
  function upload_image (line 62) | def upload_image(canvas_or_url, image_type, app=None, filename=None,
  function check_canvas (line 99) | def check_canvas(image_url, image_type):
  function convert2unicode (line 107) | def convert2unicode(s):
  function convert2str (line 113) | def convert2str(s):
  function gen_attachment (line 119) | def gen_attachment(text, image_url='', image_type='url', title='',
  function trunc_utf8 (line 135) | def trunc_utf8(s, length=50):
  function replaced (line 142) | def replaced(message, rep_words):

FILE: slack_bot/plugins/v2ex.py
  function get_updated_interval (line 29) | def get_updated_interval(node_name, feeds, default=ONE_DAY):
  function fetch2cache (line 48) | def fetch2cache(node_name):
  function fetch (line 76) | def fetch(force=False):
  function test (line 97) | def test(data):
  function handle (line 101) | def handle(data):

FILE: slack_bot/plugins/weather.py
  function get_city (line 24) | def get_city(data):
  function test (line 32) | def test(data):
  function handle (line 36) | def handle(data):

FILE: slack_bot/plugins/wikipedia.py
  function test (line 40) | def test(data):
  function handle (line 44) | def handle(data):
  function wikipedia (line 51) | def wikipedia(title):

FILE: slack_bot/utils.py
  function timeout (line 8) | def timeout(seconds, default="timeout"):
Condensed preview — 39 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (226K chars).
[
  {
    "path": ".gitignore",
    "chars": 733,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\n"
  },
  {
    "path": "LICENSE",
    "chars": 1070,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2015 小明\n\nPermission is hereby granted, free of charge, to any person obtaining a co"
  },
  {
    "path": "Procfile",
    "chars": 50,
    "preview": "web: gunicorn wsgi:app --timeout 240 --log-file -\n"
  },
  {
    "path": "README.md",
    "chars": 3085,
    "preview": "# slack\\_bot\n立志成为一个可被调戏且有用的Bot\n\n### 介绍\n\n很多人听过甚至曾经用过[小黄鸡](https://github.com/wong2/xiaohuangji-new). 你可以把本bot理解为`增加了很多功能`"
  },
  {
    "path": "manage.py",
    "chars": 1073,
    "preview": "# coding=utf-8\nimport json\nfrom pprint import pprint\n\nfrom flask import current_app\nfrom flask_script import Manager, Se"
  },
  {
    "path": "requirements.txt",
    "chars": 123,
    "preview": "flask\nrequests\nlxml\npytz\ngunicorn\nFlask-Cache\nflask-redis\nFlask-Script\njieba\npypinyin\nbeautifulsoup4\nflask-slackbot==0.2"
  },
  {
    "path": "runtime.txt",
    "chars": 13,
    "preview": "python-2.7.9\n"
  },
  {
    "path": "slack_bot/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "slack_bot/app.py",
    "chars": 2153,
    "preview": "# coding=utf-8\nimport os\nimport re\n\nfrom flask import Flask\n\nfrom flask_slackbot import SlackBot\n\nimport settings\nimport"
  },
  {
    "path": "slack_bot/ext.py",
    "chars": 124,
    "preview": "# coding=utf-8\nfrom flask_redis import FlaskRedis\nfrom flask_cache import Cache\n\nredis_store = FlaskRedis()\ncache = Cach"
  },
  {
    "path": "slack_bot/local_settings.py.example",
    "chars": 619,
    "preview": "# coding=utf-8\n\nDEBUG = False\nSECRET_KEY = 'your secert key'\n\nSLACK_CHAT_TOKEN = 'your slack char token'\nSLACK_CALLBACK "
  },
  {
    "path": "slack_bot/plugins/__init__.py",
    "chars": 321,
    "preview": "# coding=utf-8\n__all__ = [\n    'help',\n    'github_issue',\n    'baidumap',\n    'bj_bus',\n    'pycoders',\n    'v2ex',\n   "
  },
  {
    "path": "slack_bot/plugins/airpollution.py",
    "chars": 7530,
    "preview": "#!/usr/bin/env python\n# -*-coding:utf-8-*-\n\n\"\"\"\nCopyright (c) 2012 Qijiang Fan <fqj1994@gmail.com>\n\nPermission is hereby"
  },
  {
    "path": "slack_bot/plugins/baidumap.py",
    "chars": 8041,
    "preview": "# coding=utf-8\n\n# 百度地图\nimport os\nimport re\nimport cPickle as pickle\nfrom datetime import datetime\n\nfrom flask import cur"
  },
  {
    "path": "slack_bot/plugins/bj_bus.py",
    "chars": 9546,
    "preview": "# coding=utf-8\nimport os\nimport urllib2\nimport hashlib\nfrom datetime import date\nimport cPickle as pickle\n\nimport lxml.e"
  },
  {
    "path": "slack_bot/plugins/consts.py",
    "chars": 514,
    "preview": "# coding=utf-8\nONE_MINUTE = 60\nHALF_HOUR = 60 * 30\nONE_HOUR = 60 * 60\nHALF_DAY = 60 * 60 * 12\nONE_DAY = 60 * 60 * 24\n\nCO"
  },
  {
    "path": "slack_bot/plugins/data/baidu_tag.pkl",
    "chars": 23623,
    "preview": "(lp1\nV\\u7f8e\\u98df,\\u4e2d\\u9910\\u9986,\\u9c81\\u83dc\np2\naV\\u7f8e\\u98df,\\u4e2d\\u9910\\u9986,\\u5ddd\\u83dc\np3\naV\\u7f8e\\u98df,\\"
  },
  {
    "path": "slack_bot/plugins/data/bjbus_lines.pkl",
    "chars": 83149,
    "preview": "(dp1\nI1\n(dp2\nS'status'\np3\nI0\nsS'linename'\np4\nV917\\u5feb\\u8f66\\u5ef6\\u957f\\u7ebf(\\u6d9e\\u6c34\\u4ea7\\u4e1a\\u56ed\\u533a-\\u5"
  },
  {
    "path": "slack_bot/plugins/dianping.py",
    "chars": 5285,
    "preview": "# coding=utf-8\nimport re\nimport hashlib\nfrom functools import partial\n\nfrom flask import current_app as app\nimport reque"
  },
  {
    "path": "slack_bot/plugins/earthquake.py",
    "chars": 2154,
    "preview": "# !/usr/bin/env python\n# -*-coding:utf-8-*-\n\n\"\"\"\nCopyright (c) 2012 Qijiang Fan <fqj1994@gmail.com>\n\nPermission is hereb"
  },
  {
    "path": "slack_bot/plugins/events.py",
    "chars": 7051,
    "preview": "# coding=utf-8\nfrom __future__ import division\nfrom datetime import date\n\nimport jieba\nimport requests\nfrom bs4 import B"
  },
  {
    "path": "slack_bot/plugins/github_issue.py",
    "chars": 1272,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nfrom flask import current_app as app\nimport requests\n\ndescription = \"\"\"\n当前"
  },
  {
    "path": "slack_bot/plugins/help.py",
    "chars": 668,
    "preview": "# coding=utf-8\nfrom flask import current_app\n\ndescription = \"\"\"\n帮助信息,触发条件: \"help [私聊]\". 比如:\n* help\n\"\"\"\n\n\ndef format_desc"
  },
  {
    "path": "slack_bot/plugins/movie.py",
    "chars": 2937,
    "preview": "# coding=utf-8\n\nfrom flask import current_app\nimport requests\nfrom bs4 import BeautifulSoup\n\nfrom .utils import to_pinyi"
  },
  {
    "path": "slack_bot/plugins/orz.py",
    "chars": 1566,
    "preview": "# -*-coding:utf-8-*-\n\n\"\"\"\nCopyright (c) 2012 wong2 <wonderfuly@gmail.com>\n\nPermission is hereby granted, free of charge,"
  },
  {
    "path": "slack_bot/plugins/pycoders.py",
    "chars": 3934,
    "preview": "# coding=utf-8\nimport re\nfrom HTMLParser import HTMLParser\n\nimport requests\nfrom bs4 import BeautifulSoup\n\nfrom slack_bo"
  },
  {
    "path": "slack_bot/plugins/pythonweekly.py",
    "chars": 3086,
    "preview": "# coding=utf-8\nimport re\n\nimport requests\nfrom bs4 import BeautifulSoup\n\nfrom slack_bot.ext import cache\nfrom utils impo"
  },
  {
    "path": "slack_bot/plugins/qiubai.py",
    "chars": 1889,
    "preview": "# coding:utf-8\n\n\"\"\"\nCopyright (c) 2013 Xiangyu Ye<yexiangyu1985@gmail.com>\n\nPermission is hereby granted, free of charge"
  },
  {
    "path": "slack_bot/plugins/simsimi.py",
    "chars": 5066,
    "preview": "# -*-coding:utf-8-*-\n\n\"\"\"\nCopyright (c) 2012 wong2 <wonderfuly@gmail.com>\nCopyright (c) 2012 hupili <hpl1989@gmail.com>\n"
  },
  {
    "path": "slack_bot/plugins/toutiao.py",
    "chars": 1718,
    "preview": "# coding=utf-8\n\nimport requests\n\nfrom utils import datetime2timestamp, gen_attachment, trunc_utf8\n\nCHANNEL_MAPS = {\n    "
  },
  {
    "path": "slack_bot/plugins/travel.py",
    "chars": 2349,
    "preview": "# coding=utf-8\nimport re\n\nfrom flask import current_app\n\nfrom baidumap import travel_city, travel_attractions\nfrom weath"
  },
  {
    "path": "slack_bot/plugins/utils.py",
    "chars": 4024,
    "preview": "# coding=utf-8\nimport os\nimport re\nimport random\nimport shutil\nimport calendar\nfrom datetime import datetime\n\nfrom flask"
  },
  {
    "path": "slack_bot/plugins/v2ex.py",
    "chars": 4053,
    "preview": "# coding=utf-8\nimport cgi\nfrom datetime import datetime\n\nfrom lxml import etree\nimport requests\n\nfrom slack_bot.ext impo"
  },
  {
    "path": "slack_bot/plugins/weather.py",
    "chars": 1878,
    "preview": "# coding=utf-8\n\n# 天气\nimport os\nimport re\nimport cPickle as pickle\n\nfrom flask import current_app\n\nfrom baidumap import w"
  },
  {
    "path": "slack_bot/plugins/wikipedia.py",
    "chars": 1992,
    "preview": "# -*-coding:utf-8-*-\n\n\"\"\"\nCopyright (c) 2012 yangzhe1991 <ud1937@gmail.com>\n\nPermission is hereby granted, free of charg"
  },
  {
    "path": "slack_bot/settings.py",
    "chars": 1462,
    "preview": "# coding=utf-8\n\n# debug模式主要用在gunicorn启动的时候可能看到错误堆栈\nDEBUG = True\nSECRET_KEY = 'o\\xdd\\x02I\\x0b\\xbbBP4\\x97\\xab\\xe0GF\\xfba\\x"
  },
  {
    "path": "slack_bot/utils.py",
    "chars": 646,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nfrom multiprocessing import TimeoutError\nfrom multiprocessing.pool import "
  },
  {
    "path": "wsgi.py",
    "chars": 72,
    "preview": "# coding=utf-8\nfrom slack_bot.app import create_app\n\napp = create_app()\n"
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the python-cn/slack_bot GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 39 files (190.3 KB), approximately 95.6k tokens, and a symbol index with 139 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!