master 113b9a06013c cached
177 files
557.2 KB
182.1k tokens
24 symbols
1 requests
Download .txt
Showing preview only (603K chars total). Download the full file or copy to clipboard to get everything.
Repository: TKkk-iOSer/WeChatPlugin-MacOS
Branch: master
Commit: 113b9a06013c
Files: 177
Total size: 557.2 KB

Directory structure:
gitextract_a01jbg_c/

├── .github/
│   └── ISSUE_TEMPLATE.md
├── .gitignore
├── CHANGELOG.md
├── Install.md
├── LICENSE
├── Other/
│   ├── Install.sh
│   ├── Products/
│   │   └── Debug/
│   │       └── WeChatPlugin.framework/
│   │           ├── Headers/
│   │           │   └── WeChatPlugin.h
│   │           ├── Modules/
│   │           │   └── module.modulemap
│   │           ├── Resources/
│   │           │   ├── Base.lproj/
│   │           │   │   ├── TKAboutWindowController.nib
│   │           │   │   └── TKRemoteControlWindowController.nib
│   │           │   ├── Info.plist
│   │           │   ├── TKAutoReplyWindowController.nib
│   │           │   ├── TKDownloadWindowController.nib
│   │           │   ├── TKRemoteControlCommands.plist
│   │           │   ├── TKRemoteControlScript.scpt
│   │           │   ├── en.lproj/
│   │           │   │   ├── Localizable.strings
│   │           │   │   ├── TKAboutWindowController.nib
│   │           │   │   └── about.rtfd/
│   │           │   │       └── TXT.rtf
│   │           │   ├── zh-Hans.lproj/
│   │           │   │   ├── Localizable.strings
│   │           │   │   ├── TKRemoteControlWindowController.nib
│   │           │   │   └── about.rtfd/
│   │           │   │       └── TXT.rtf
│   │           │   └── zh-Hant.lproj/
│   │           │       ├── Localizable.strings
│   │           │       ├── TKAboutWindowController.nib
│   │           │       ├── TKRemoteControlWindowController.nib
│   │           │       └── about.rtfd/
│   │           │           └── TXT.rtf
│   │           ├── Versions/
│   │           │   ├── A/
│   │           │   │   ├── Headers/
│   │           │   │   │   └── WeChatPlugin.h
│   │           │   │   ├── Modules/
│   │           │   │   │   └── module.modulemap
│   │           │   │   ├── Resources/
│   │           │   │   │   ├── Base.lproj/
│   │           │   │   │   │   ├── TKAboutWindowController.nib
│   │           │   │   │   │   └── TKRemoteControlWindowController.nib
│   │           │   │   │   ├── Info.plist
│   │           │   │   │   ├── TKAutoReplyWindowController.nib
│   │           │   │   │   ├── TKDownloadWindowController.nib
│   │           │   │   │   ├── TKRemoteControlCommands.plist
│   │           │   │   │   ├── TKRemoteControlScript.scpt
│   │           │   │   │   ├── en.lproj/
│   │           │   │   │   │   ├── Localizable.strings
│   │           │   │   │   │   ├── TKAboutWindowController.nib
│   │           │   │   │   │   └── about.rtfd/
│   │           │   │   │   │       └── TXT.rtf
│   │           │   │   │   ├── zh-Hans.lproj/
│   │           │   │   │   │   ├── Localizable.strings
│   │           │   │   │   │   ├── TKRemoteControlWindowController.nib
│   │           │   │   │   │   └── about.rtfd/
│   │           │   │   │   │       └── TXT.rtf
│   │           │   │   │   └── zh-Hant.lproj/
│   │           │   │   │       ├── Localizable.strings
│   │           │   │   │       ├── TKAboutWindowController.nib
│   │           │   │   │       ├── TKRemoteControlWindowController.nib
│   │           │   │   │       └── about.rtfd/
│   │           │   │   │           └── TXT.rtf
│   │           │   │   └── WeChatPlugin
│   │           │   └── Current/
│   │           │       ├── Headers/
│   │           │       │   └── WeChatPlugin.h
│   │           │       ├── Modules/
│   │           │       │   └── module.modulemap
│   │           │       ├── Resources/
│   │           │       │   ├── Base.lproj/
│   │           │       │   │   ├── TKAboutWindowController.nib
│   │           │       │   │   └── TKRemoteControlWindowController.nib
│   │           │       │   ├── Info.plist
│   │           │       │   ├── TKAutoReplyWindowController.nib
│   │           │       │   ├── TKDownloadWindowController.nib
│   │           │       │   ├── TKRemoteControlCommands.plist
│   │           │       │   ├── TKRemoteControlScript.scpt
│   │           │       │   ├── en.lproj/
│   │           │       │   │   ├── Localizable.strings
│   │           │       │   │   ├── TKAboutWindowController.nib
│   │           │       │   │   └── about.rtfd/
│   │           │       │   │       └── TXT.rtf
│   │           │       │   ├── zh-Hans.lproj/
│   │           │       │   │   ├── Localizable.strings
│   │           │       │   │   ├── TKRemoteControlWindowController.nib
│   │           │       │   │   └── about.rtfd/
│   │           │       │   │       └── TXT.rtf
│   │           │       │   └── zh-Hant.lproj/
│   │           │       │       ├── Localizable.strings
│   │           │       │       ├── TKAboutWindowController.nib
│   │           │       │       ├── TKRemoteControlWindowController.nib
│   │           │       │       └── about.rtfd/
│   │           │       │           └── TXT.rtf
│   │           │       └── WeChatPlugin
│   │           └── WeChatPlugin
│   ├── Uninstall.sh
│   ├── Update.sh
│   ├── UpdateRemoteControlCommandsPlist.py
│   └── insert_dylib
├── Podfile
├── Q&A.md
├── README.md
├── README_EN.md
├── WeChatPlugin/
│   ├── Info.plist
│   ├── Sources/
│   │   ├── Common/
│   │   │   ├── Category/
│   │   │   │   ├── NSButton+Action.h
│   │   │   │   ├── NSButton+Action.m
│   │   │   │   ├── NSDate+Action.h
│   │   │   │   ├── NSDate+Action.m
│   │   │   │   ├── NSMenu+Action.h
│   │   │   │   ├── NSMenu+Action.m
│   │   │   │   ├── NSMenuItem+Action.h
│   │   │   │   ├── NSMenuItem+Action.m
│   │   │   │   ├── NSString+Action.h
│   │   │   │   ├── NSString+Action.m
│   │   │   │   ├── NSTextField+Action.h
│   │   │   │   ├── NSTextField+Action.m
│   │   │   │   ├── NSView+Action.h
│   │   │   │   ├── NSView+Action.m
│   │   │   │   ├── NSWindowController+Action.h
│   │   │   │   └── NSWindowController+Action.m
│   │   │   ├── Macro/
│   │   │   │   ├── ColorConstant.h
│   │   │   │   ├── DefineConstant.h
│   │   │   │   └── NotifyConstant.h
│   │   │   └── TKPrefixHeader.pch
│   │   ├── Config/
│   │   │   ├── TKConstants.h
│   │   │   ├── TKWeChatPluginConfig.h
│   │   │   └── TKWeChatPluginConfig.m
│   │   ├── Hook/
│   │   │   ├── MMChatsTableCellView+hook.h
│   │   │   ├── MMChatsTableCellView+hook.m
│   │   │   ├── MMStickerMessageCellView+hook.h
│   │   │   ├── MMStickerMessageCellView+hook.m
│   │   │   ├── MMStickerPickerCell+hook.h
│   │   │   ├── MMStickerPickerCell+hook.m
│   │   │   ├── WeChat+hook.h
│   │   │   └── WeChat+hook.m
│   │   ├── Managers/
│   │   │   ├── TKAssistantMenuManager.h
│   │   │   ├── TKAssistantMenuManager.m
│   │   │   ├── TKCacheManager.h
│   │   │   ├── TKCacheManager.m
│   │   │   ├── TKEmoticonManager.h
│   │   │   ├── TKEmoticonManager.m
│   │   │   ├── TKHTTPManager.h
│   │   │   ├── TKHTTPManager.m
│   │   │   ├── TKMessageManager.h
│   │   │   ├── TKMessageManager.m
│   │   │   ├── TKRemoteControlCommands.plist
│   │   │   ├── TKRemoteControlManager.h
│   │   │   ├── TKRemoteControlManager.m
│   │   │   ├── TKVersionManager.h
│   │   │   ├── TKVersionManager.m
│   │   │   ├── TKWebServerManager.h
│   │   │   └── TKWebServerManager.m
│   │   ├── Models/
│   │   │   ├── TKAutoReplyModel.h
│   │   │   ├── TKAutoReplyModel.m
│   │   │   ├── TKBaseModel.h
│   │   │   ├── TKBaseModel.m
│   │   │   ├── TKIgnoreSessonModel.h
│   │   │   ├── TKIgnoreSessonModel.m
│   │   │   ├── TKRemoteControlModel.h
│   │   │   └── TKRemoteControlModel.m
│   │   ├── Utils/
│   │   │   ├── TKHelper.h
│   │   │   ├── TKHelper.m
│   │   │   ├── TKUtility.h
│   │   │   └── TKUtility.m
│   │   ├── Vendor/
│   │   │   ├── fishhook.c
│   │   │   └── fishhook.h
│   │   ├── Views/
│   │   │   ├── AutoReply/
│   │   │   │   ├── TKAutoReplyCell.h
│   │   │   │   ├── TKAutoReplyCell.m
│   │   │   │   ├── TKAutoReplyContentView.h
│   │   │   │   └── TKAutoReplyContentView.m
│   │   │   └── RemoteControl/
│   │   │       ├── TKRemoteControlCell.h
│   │   │       └── TKRemoteControlCell.m
│   │   └── WindowControllers/
│   │       ├── About/
│   │       │   ├── Base.lproj/
│   │       │   │   └── TKAboutWindowController.xib
│   │       │   ├── TKAboutWindowController.h
│   │       │   ├── TKAboutWindowController.m
│   │       │   ├── en.lproj/
│   │       │   │   └── TKAboutWindowController.xib
│   │       │   └── zh-Hant.lproj/
│   │       │       └── TKAboutWindowController.xib
│   │       ├── AutoReply/
│   │       │   ├── TKAutoReplyWindowController.h
│   │       │   ├── TKAutoReplyWindowController.m
│   │       │   └── TKAutoReplyWindowController.xib
│   │       ├── Download/
│   │       │   ├── TKDownloadWindowController.h
│   │       │   ├── TKDownloadWindowController.m
│   │       │   └── TKDownloadWindowController.xib
│   │       └── RemoteControl/
│   │           ├── Base.lproj/
│   │           │   └── TKRemoteControlWindowController.xib
│   │           ├── TKRemoteControlWindowController.h
│   │           ├── TKRemoteControlWindowController.m
│   │           ├── zh-Hans.lproj/
│   │           │   └── TKRemoteControlWindowController.xib
│   │           └── zh-Hant.lproj/
│   │               └── TKRemoteControlWindowController.xib
│   ├── TKRemoteControlScript.scpt
│   ├── WeChatPlugin.h
│   ├── en.lproj/
│   │   ├── Localizable.strings
│   │   └── about.rtfd/
│   │       └── TXT.rtf
│   ├── main.mm
│   ├── zh-Hans.lproj/
│   │   ├── Localizable.strings
│   │   └── about.rtfd/
│   │       └── TXT.rtf
│   └── zh-Hant.lproj/
│       ├── Localizable.strings
│       └── about.rtfd/
│           └── TXT.rtf
├── WeChatPlugin.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   └── contents.xcworkspacedata
│   └── xcuserdata/
│       └── TK.xcuserdatad/
│           ├── xcdebugger/
│           │   └── Breakpoints_v2.xcbkptlist
│           └── xcschemes/
│               ├── WeChatPlugin.xcscheme
│               └── xcschememanagement.plist
└── WeChatPlugin.xcworkspace/
    ├── contents.xcworkspacedata
    ├── xcshareddata/
    │   └── IDEWorkspaceChecks.plist
    └── xcuserdata/
        └── TK.xcuserdatad/
            ├── IDEFindNavigatorScopes.plist
            └── xcdebugger/
                └── Breakpoints_v2.xcbkptlist

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

================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
<!--
提 issue 前,请先完成以下四步:

1. 确保微信小助手是最新版本,没有请更新.
2. 请搜索下是否有人发了相同的 issue,可以的话请在相同的 issue 下描述自己的问题,避免 duplicate issue.
3. 请详细查看 Wiki 中的常见问题解决方法。Wiki地址:https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/wiki
4. 如果是 oh-my-wechat 、wechat-alfred-workflow、LaunchBar 的问题,请到各自的项目提 issue。

如果以上四步仍然没有解决问题,那么请遵从以下的规范描述您的问题。
之后可以点击上方的 Preview 进行预览。
-->

### 问题描述
<!--描述问题发生的场景,最好能够复现 -->

### 版本
<!--请提供macOS、微信、微信小助手当前的版本-->
* MacOS Version:
* WeChat Version:
* WeChatPlugin Version:

### 日志
<!--如果有崩溃的话,提供下崩溃日志,没有的话请删除这部分。-->



================================================
FILE: .gitignore
================================================
# Xcode
#
.DS_Store
*.xcuserstate

# CocoaPods
#
Pods/
Podfile.lock


================================================
FILE: CHANGELOG.md
================================================
# 更新日志 

### [v2.0 (2023-03-12)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v2.)

- 适配 3.7.0
- 新增撤回消息定位
- 新增群聊监控
- 移除官方已支持的功能(自动登录,移除会话,标为未读等等)

### [v1.7.5 (2019-01-13)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7.5)

- 适配 2.3.22
- 新增禁止微信检测更新开关
- 优化 XML解析(在此感谢 @wangliangliang2 提醒)

###[v1.7.3 (2018-10-23)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7.3)

- 适配2.3.19
- 菜单栏新增 alfred 开关
- 更改更新弹窗逻辑
- 新增自带浏览器浏览开关

### [v1.7.1 (2018-07-24)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7.1)

* 适配微信 Version. 2.3.17
* 新增 alfred 搜索最近聊天列表
* 新增 alfred 查看用户聊天记录

### [v1.7 (2018-05-12)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7)

* 新增不同账户设置不同的自动回复&远程控制
* 自动回复新增总开关&指定联系人
* 远程控制新增控制小助手配置
* 新增一键已读
* 新增一键清除空回话
* 新增国际化(支持英、简、繁)
* 新增关于小助手
* 新增在线更新小助手
* 去除微信url转链处理(从此直接打开抖音链接🌝
* 修复无法免认证登录&多开等bug

### [v1.6.1 (2018-04-07)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6.1)

* 自动回复新增延迟回复
* 调整置顶模式快捷键
* 修复bug & 优化代码
* 更新 README.md 文档 

### [v1.6 (2018-03-18)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6)

* 新增 Alfred 快捷发送消息 & 打开聊天窗口

### [v1.5.1 (2018-03-03)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.1)

* 新增语音远程控制 mac
* 修复快捷回复后消息未读数未更新的问题
* 优化防撤回提醒 (显示撤回人昵称 & 消息类型)

### [v1.5.0 (2018-02-24)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.0)

* 优化防撤回提醒
* 新增自动登录开关
* 新增小助手检测更新
* 新增通知中心快捷回复
* 新增表情包复制 & 存储
* 自动回复 & 远程控制设置存储到本地

### [v1.4.0 (2017-10-11)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.4.0)

* 新增微信窗口置顶
* 新增最近联系人多选删除
* 新增远程控制信息回调
* 新增手机端获取指令信息

### [v1.3.0 (2017-09-17)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.3.0)

* 新增最近联系人置底功能
* 新增免认证登录

### [v1.2.0 (2017-09-11)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.2.0)

* 自动回复新增 正则匹配 & 私聊开关
* 修复聊天记录消失 & `~/Documents` 生成MMappedKV、JietuSDKStat.plist 文件


### [v1.1.0 (2017-08-23)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.1.0)

* 重构 自动回复,实现多回复
* 优化 代码结构

### [v1.0.1 (2017-08-18)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.0.1)

* 修复 部分防撤回提示乱码的bug
* 新增 Install.sh  & Uninstall.sh   

### [v1.0.0 (2017-08-09)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.0.0)

* 新增 远程控制
* 新增 微信多开
* 优化 消息防撤回
* 优化 自动回复



================================================
FILE: Install.md
================================================


## Install

**第一次安装需要输入密码,仅是为了获取写入微信文件夹的权限**

**0. 懒癌版安装&升级**

打开`应用程序-实用工具-Terminal(终端)`,执行下面的命令安装 [Oh My WeChat](https://github.com/lmk123/oh-my-wechat):

```sh
curl -o- -L https://raw.githubusercontent.com/lmk123/oh-my-wechat/master/install.sh | bash -s
```

然后运行 `omw` 即可。

> 可以访问 [Oh My WeChat 的项目主页](https://github.com/lmk123/oh-my-wechat#oh-my-wechat)查看更多用法。

**1. 普通安装**

* 点击`clone or download`按钮下载 WeChatPlugin 并解压

![clone or download](./Other/ScreenShots/install_download.png)

* 从`应用程序-实用工具`中打开Terminal(终端)

![terminal](./Other/ScreenShots/terminal_path.png)

* 拖动解压后`Install.sh` 文件到终端中回车即可.

![terminal](./Other/ScreenShots/install_terminal.png)

**2. 若想修改源码&重编译(需要安装Cocoapods)**

* 先更改微信的 owner 以获取写入微信文件夹的权限,否则会出现类似**Permission denied**的错误。

`sudo chown -R $(whoami) /Applications/WeChat.app`

![Permission denied.png](http://upload-images.jianshu.io/upload_images/965383-11e4480553ba086e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

* 下载 WeChatPlugin, 进行`Pod install`。
* 用Xcode打开,编辑 Scheme,在 Debug 模式下启动 WeChat。
![](http://upload-images.jianshu.io/upload_images/965383-26dbb068acb8998f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![edit scheme](http://upload-images.jianshu.io/upload_images/965383-7fbd4dc6e8d161dc.gif?imageMogr2/auto-orient/strip)
* 之后 Run (`command + R`)即可启动微信,此时插件注入完成。

* 若 Error,提示找不到 Framework,先进行 Build。
* 若Error, 需要配置环境,请参考[我的博客](http://www.tkkk.fun/2017/04/21/macOS%E9%80%86%E5%90%91-%E5%BE%AE%E4%BF%A1%E5%B0%8F%E5%8A%A9%E6%89%8B/)。

## 卸载

* 打开Terminal(终端),拖动解压后`Uninstall.sh` 文件到 Terminal 回车即可。

================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2017 TK

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: Other/Install.sh
================================================
#!/bin/bash

wechat_path="/Applications/WeChat.app"

if [ ! -d "$wechat_path" ]
then
wechat_path="/Applications/微信.app"
if [ ! -d "$wechat_path" ]
then
echo -e "\n\n应用程序文件夹中未发现微信,请检查微信是否有重命名或者移动路径位置"
exit
fi
fi

app_name="WeChat"
shell_path="$(dirname "$0")"
framework_name="WeChatPlugin"
app_bundle_path="${wechat_path}/Contents/MacOS"
app_executable_path="${app_bundle_path}/${app_name}"
app_executable_backup_path="${app_executable_path}_backup"
framework_path="${app_bundle_path}/${framework_name}.framework"


# 对 WeChat 赋予权限
if [ ! -w "$wechat_path" ]
then
echo -e "\n\n为了将小助手写入微信, 请输入密码 : "
sudo chown -R $(whoami) "$wechat_path"
fi

# 判断是否已经存在备份文件 或者 是否强制覆盖安装
if [ ! -f "$app_executable_backup_path" ] || [ -n "$1" -a "$1" = "--force" ]
then
# 备份 WeChat 原始可执行文件
cp "$app_executable_path" "$app_executable_backup_path"
result="y"
else
read -t 150 -p "已安装微信小助手,是否覆盖?[y/n]:" result
fi

if [[ "$result" == 'y' ]]; then
    cp -r "${shell_path}/Products/Debug/${framework_name}.framework" ${app_bundle_path}
    ${shell_path}/insert_dylib --all-yes "${framework_path}/${framework_name}" "$app_executable_backup_path" "$app_executable_path"
fi


================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Headers/WeChatPlugin.h
================================================
//
//  WeChatPlugin.h
//  WeChatPlugin
//
//  Created by TK on 2017/4/19.
//  Copyright © 2017年 tk. All rights reserved.
//

#import <Cocoa/Cocoa.h>
#import "TKWeChatPluginConfig.h"
#import "TKHelper.h"

FOUNDATION_EXPORT double WeChatPluginVersionNumber;
FOUNDATION_EXPORT const unsigned char WeChatPluginVersionString[];

@class WCContactData;

#pragma mark - 微信原始的部分类与方法

@interface MMSystemLinkInfo : NSObject
@property(retain, nonatomic) NSMutableAttributedString *msgContent;

@end
@interface MMContactProfileController : NSViewController
@property(copy, nonatomic) NSString *groupName;
@property(nonatomic) struct CGRect relativeToRect;
@property(nonatomic) unsigned long long preferredEdge;
@property(retain, nonatomic) WCContactData *contactData;
- (void)sendGetContactRequest:(id)arg1 withGroupName:(id)arg2;
- (void)showInView:(id)arg1;
@end


@interface MMBrandChatsViewController : NSObject
- (void)startChatWithContact:(id)arg1;
@end

@interface MMLoginOneClickViewController : NSViewController
@property(nonatomic) NSTextField *descriptionLabel;
- (void)onLoginButtonClicked:(id)arg1;
@property(nonatomic) NSButton *loginButton;
@end

@interface AccountService : NSObject
- (id)GetLastLoginUserName;
- (id)GetLastLoginAutoAuthKey;
- (BOOL)canAutoAuth;
- (void)AutoAuth;
- (void)ManualLogin:(id)arg1 withPassword:(id)arg2;
- (void)ManualLogout;
- (void)FFAddSvrMsgImgVCZZ;
- (void)QRCodeLoginWithUserName:(id)arg1 password:(id)arg2;
- (void)onAuthOKOfUser:(id)arg1 withSessionKey:(id)arg2 withServerId:(id)arg3 autoAuthKey:(id)arg4 isAutoAuth:(BOOL)arg5;
@end

@interface MMLoginViewController : NSObject
@property(retain, nonatomic) MMLoginOneClickViewController *oneClickViewController;
@end

@interface MMHandoffButton : NSView
@end

@interface MMMainViewController : NSObject
@property(nonatomic) __weak MMHandoffButton *handoffButton;
@end

@interface MMMainWindowController : NSWindowController
@property(retain, nonatomic) MMLoginViewController *loginViewController;
@property(retain, nonatomic) MMMainViewController *mainViewController;
- (void)onAuthOK;
- (void)onLogOut;
@end

@interface MMVoiceTranscribeCGI : NSObject
- (void)transcribeVoiceMessage:(id)arg1 withCompletion:(void (^)(void))arg2;
@end

@interface FFProcessReqsvrZZ : NSObject
- (void)onRevokeMsg:(id)arg1;
- (void)FFToNameFavChatZZ:(id)arg1;
- (void)FFToNameFavChatZZ:(id)arg1 sessionMsgList:(id)arg2;
- (void)OnSyncBatchAddMsgs:(NSArray *)arg1 isFirstSync:(BOOL)arg2;
- (void)FFImgToOnFavInfoInfoVCZZ:(id)arg1 isFirstSync:(BOOL)arg2;
- (id)FFProcessTReqZZ:(id)arg1 toUsrName:(id)arg2 msgText:(id)arg3 atUserList:(id)arg4;
- (id)GetMsgData:(id)arg1 svrId:(long)arg2;
- (void)AddLocalMsg:(id)arg1 msgData:(id)arg2;
- (void)TranscribeVoiceMessage:(id)arg1 completion:(void (^)(void))arg2;
- (BOOL)ClearUnRead:(id)arg1 FromID:(unsigned int)arg2 ToID:(unsigned int)arg3;
- (BOOL)ClearUnRead:(id)arg1 FromCreateTime:(unsigned int)arg2 ToCreateTime:(unsigned int)arg3;
- (BOOL)HasMsgInChat:(id)arg1;
- (id)GetMsgListWithChatName:(id)arg1 fromCreateTime:(unsigned int)arg2 localId:(NSInteger)arg3 limitCnt:(NSInteger)arg4 hasMore:(char *)arg5 sortAscend:(BOOL)arg6;
- (void)DelMsg:(id)arg1 msgList:(id)arg2 isDelAll:(BOOL)arg3 isManual:(BOOL)arg4;
@end

@interface MMServiceCenter : NSObject
+ (id)defaultCenter;
- (id)getService:(Class)arg1;
@end

@interface SKBuiltinString_t : NSObject
@property(retain, nonatomic, setter=SetString:) NSString *string; // @synthesize string;
@end

@interface AddMsg : NSObject
@property(retain, nonatomic, setter=SetContent:) SKBuiltinString_t *content; // @synthesize content;
@property(retain, nonatomic, setter=SetFromUserName:) SKBuiltinString_t *fromUserName; // @synthesize fromUserName;
@property(nonatomic, setter=SetMsgType:) int msgType; // @synthesize msgType;
@property(retain, nonatomic, setter=SetToUserName:) SKBuiltinString_t *toUserName; // @synthesize toUserName;
@property (nonatomic, assign) unsigned int createTime;
@property(nonatomic, setter=SetNewMsgId:) long long newMsgId;
@end

@interface MMChatMessageViewController : NSViewController
@property(retain, nonatomic) WCContactData *chatContact;
@property(nonatomic) __weak NSTableView *messageTableView;
- (void)scrollToMessage:(NSUInteger)arg1;
- (BOOL)showLocatedMessage:(NSUInteger)arg1;
- (BOOL)showLocatedMessage:(unsigned int)arg1 needHighLighted:(BOOL)arg2;
- (void)onClickSession;
- (void)reloadTableView;
@end

@interface MMChatDetailSplitViewController : NSObject
@property(retain, nonatomic) MMChatMessageViewController *chatMessageViewController;
@end

@interface MMChatsViewController : NSViewController <NSTableViewDataSource, NSTableViewDelegate>
@property(nonatomic) __weak NSTableView *tableView;
@property(retain, nonatomic) MMBrandChatsViewController *brandChatsViewController;
@property(retain, nonatomic) MMChatDetailSplitViewController *chatDetailSplitViewController;
@end

@interface WeChat : NSObject
+ (id)sharedInstance;
@property(nonatomic) MMChatsViewController *chatsViewController;
@property(retain, nonatomic) MMMainWindowController *mainWindowController;
@property(nonatomic) BOOL isAppTerminating;
@property(nonatomic) BOOL hasAuthOK;
- (void)startANewChatWithContact:(id)arg1;
- (void)_clearAllUnreadMessages:(id)arg1;
- (void)onAuthOK:(BOOL)arg1;
- (void)checkForUpdatesInBackground;
- (void)FFAddRecvFavZZ:(BOOL)arg1;
@end

@interface ContactStorage : NSObject
- (id)GetSelfContact;
- (id)GetContact:(id)arg1;
- (id)GetAllBrandContacts;
- (id)GetAllFavContacts;
- (id)GetAllFriendContacts;
@end

@interface GroupStorage : NSObject
{
    NSMutableDictionary *m_dictGroupContacts;
}
- (id)GetAllGroups;
- (id)GetGroupMemberContact:(id)arg1;
- (void)notifyModifyGroupContactsOnMainThread:(id)arg1;
//- (id)GetGroupMemberListWithGroupContact:(id)arg1;
- (id)GetGroupMemberListWithGroupContact:(id)arg1 limit:(unsigned int)arg2 filterSelf:(BOOL)arg3;
@end

@interface ChatRoomData : NSObject
{
    NSMutableDictionary *m_dicData;
}
@end

@interface WCContactData : NSObject
@property(retain, nonatomic) NSString *m_nsUsrName; // @synthesize m_nsUsrName;
@property(nonatomic) unsigned int m_uiFriendScene;  // @synthesize m_uiFriendScene;
@property(retain, nonatomic) NSString *m_nsNickName;    // 用户昵称
@property(retain, nonatomic) NSString *m_nsRemark;      // 备注
@property(retain, nonatomic) NSString *m_nsHeadImgUrl;  // 头像
@property(retain, nonatomic) NSString *m_nsHeadHDImgUrl;
@property(retain, nonatomic) NSString *m_nsHeadHDMd5;
@property(retain, nonatomic) NSString *m_nsAliasName;
@property(retain, nonatomic) NSString *avatarCacheKey;
@property(readonly, nonatomic) unsigned long long groupMemberCount;
@property(retain, nonatomic) ChatRoomData *m_chatRoomData;
@property(nonatomic) BOOL m_isShowRedDot;
- (BOOL)isBrandContact;
- (BOOL)isSelf;
- (id)innerGetGroupDisplayName;
- (NSString *)groupChatDisplayNameInGroup:(id)arg1;
- (id)getContactDisplayUsrName;
- (BOOL)isGroupChat;
- (BOOL)isMMChat;
- (BOOL)isMMContact;
- (BOOL)containsMember:(id)arg1;
- (id)displayRegion;
- (BOOL)isStickyFolder;
@end

@interface WCPayInfoItem : NSObject
@property(retain, nonatomic) NSString *m_nsFeeDesc;
@end

@interface MessageData : NSObject
- (id)initWithMsgType:(long long)arg1;
@property(retain, nonatomic) NSString *fromUsrName;
@property(retain, nonatomic) NSString *toUsrName;
@property(retain, nonatomic) NSString *msgContent;
@property(retain, nonatomic) NSString *msgPushContent;
@property(retain, nonatomic) NSString *realChatUserName;
@property(retain, nonatomic) WCPayInfoItem *m_oWCPayInfoItem; // @dynamic m_oWCPayInfoItem;
@property(retain, nonatomic) NSString *m_nsAppName;
@property(retain, nonatomic) NSString *m_nsSourceDisplayname;
@property(nonatomic) int messageType;
@property(nonatomic) int msgStatus;
@property(nonatomic) int msgCreateTime;
@property(nonatomic) int mesLocalID;
@property(nonatomic) long long mesSvrID;
@property(retain, nonatomic) NSString *msgVoiceText;
@property(copy, nonatomic) NSString *m_nsEmoticonMD5;
- (BOOL)isChatRoomMessage;
- (NSString *)groupChatSenderDisplayName;
- (id)getRealMessageContent;
- (id)getChatRoomUsrName;
- (BOOL)isSendFromSelf;
- (BOOL)isCustomEmojiMsg;
- (BOOL)isImgMsg;
- (BOOL)isVideoMsg;
- (BOOL)isVoiceMsg;
- (BOOL)canForward;
- (BOOL)IsPlayingSound;
- (id)summaryString:(BOOL)arg1;
- (BOOL)isEmojiAppMsg;
- (BOOL)isAppBrandMsg;
- (BOOL)IsUnPlayed;
- (void)SetPlayed;
@property(retain, nonatomic) NSString *m_nsTitle;
- (id)originalImageFilePath;
@property(retain, nonatomic) NSString *m_nsVideoPath;
@property(retain, nonatomic) NSString *m_nsFilePath;
@property(retain, nonatomic) NSString *m_nsAppMediaUrl;
@property(nonatomic) MessageData *m_refMessageData;
@property(nonatomic) unsigned int m_uiDownloadStatus;
- (void)SetPlayingSoundStatus:(BOOL)arg1;
@end

@interface CUtility : NSObject
+ (BOOL)HasWechatInstance;
+ (BOOL)FFSvrChatInfoMsgWithImgZZ;
+ (unsigned long long)getFreeDiskSpace;
+ (void)ReloadSessionForMsgSync;
+ (id)GetCurrentUserName;
+ (id)GetContactByUsrName:(id)arg1;
+ (BOOL)IsStickyChatsFolder:(id)arg1;
@end

@interface MMSessionInfoPackedInfo: NSObject
@property(retain, nonatomic) WCContactData *m_contact;
@property(retain, nonatomic) MessageData *m_msgData;
@end

@interface MMSessionInfo : NSObject
@property(nonatomic) BOOL m_bIsTop; // @synthesize m_bIsTop;
@property(nonatomic) BOOL m_bShowUnReadAsRedDot;
@property(nonatomic) BOOL m_isMentionedUnread; // @synthesize
@property BOOL isInGroupBox; 
@property(retain, nonatomic) NSString *m_nsUserName; // @synthesize m_nsUserName;
@property(retain, nonatomic) MMSessionInfoPackedInfo *m_packedInfo;
@property(nonatomic) unsigned int m_uUnReadCount; 
@end

@protocol MMChatsTableCellViewDelegate <NSObject>
@optional
- (void)cellViewReloadData:(MMSessionInfo *)arg1;
@end

@interface MMChatsTableCellView : NSTableCellView
@property(nonatomic) __weak id <MMChatsTableCellViewDelegate> delegate;
@property(retain, nonatomic) MMSessionInfo *sessionInfo;
- (void)menuWillOpen:(id)arg1;
- (void)contextMenuSticky:(id)arg1;
- (void)contextMenuDelete:(id)arg1;
- (void)tableView:(NSTableView *)arg1 rowGotMouseDown:(long long)arg2;
@end

@interface MMSessionMgr : NSObject
//@property(retain, nonatomic) NSMutableArray *m_arrSession;
- (id)getSessionAtIndex:(unsigned long long)arg1;
- (id)sessionInfoByUserName:(id)arg1;
- (void)muteSessionByUserName:(id)arg1;
- (void)onUnReadCountChange:(id)arg1;
//- (void)TopSessionByUserName:(id)arg1;
- (void)unmuteSessionByUserName:(id)arg1;
- (void)untopSessionByUserName:(id)arg1;
- (void)changeSessionUnreadCountWithUserName:(id)arg1 to:(unsigned int)arg2;
- (void)removeSessionOfUser:(id)arg1 isDelMsg:(BOOL)arg2;
- (void)sortSessions;
- (void)FFDataSvrMgrSvrFavZZ;
- (id)getContact:(id)arg1;
- (id)getSessionContact:(id)arg1;
- (void)onModifyContacts:(id)arg1;
- (NSMutableArray *)getAllSessions;
@end

@interface LogoutCGI : NSTableCellView
- (void)sendLogoutCGIWithCompletion:(id)arg1;
- (void)FFVCRecvDataAddDataToMsgChatMgrRecvZZ:(id)arg1;
@end

@interface MMNotificationService : NSObject
- (id)getNotificationContentWithMsgData:(id)arg1;
- (void)userNotificationCenter:(id)arg1 didActivateNotification:(id)arg2;
@end

@interface MMMessageTableItem : NSObject
@property(retain, nonatomic) MessageData *message;
@end

@interface MMStickerMessageCellView : NSObject
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
@property(nonatomic) MMChatMessageViewController *delegate;
- (BOOL)allowCopy;
- (void)contextMenuCopy;
- (id)contextMenu;
@end

@interface MMImageMessageCellView: NSObject
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
@end

@interface MMSystemMessageCellView: NSObject
@property(nonatomic) id delegate; 
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
@property(retain, nonatomic) NSTextView *msgTextView;
- (void)populateWithMessage:(id)arg1;
@end
@interface EmoticonMgr : NSObject
@property(retain, nonatomic) MessageData *message;
- (id)getEmotionDataWithMD5:(id)arg1;
- (id)getEmotionImgWithMD5:(id)arg1;
- (void)addFavEmoticon:(id)arg1;
- (void)addEmoticonToUploadQueueWithMD5:(id)arg1;
- (void)setAppStickerToastViewDelegate:(id)arg1;
@end

@interface MMComplexContactSearchTaskMgr : NSObject
+ (id)sharedInstance;
- (void)doComplexContactSearch:(id)arg1 searchScene:(unsigned long long)arg2 complete:(void (^)(NSString *,NSArray *, NSArray *, NSArray *,id))arg3 cancelable:(BOOL)arg4;
@end

@interface MMBasicSearchResult : NSObject
@end

@interface MMSearchResultItem : NSObject
@property(retain, nonatomic) MMBasicSearchResult *result;
@end

@interface MMSearchResultContainer : NSObject
@property(nonatomic) unsigned long long logicSearchResultFlag; // @synthesize
@end

@interface MMContactSearchLogic : NSObject
{
    unsigned long long _logicSearchResultFlag;      // 2.3.19 失效
}
@property(retain, nonatomic) NSMutableArray *contactResults;
- (void)doSearchWithKeyword:(id)arg1 searchScene:(unsigned long long)arg2 resultIsShownBlock:(id)arg3 completion:(id)arg4;
@property(retain, nonatomic) NSMutableArray *groupResults;
@property(nonatomic) BOOL isBrandContactSearched;
@property(nonatomic) BOOL isChatLogSearched;
@property(nonatomic) BOOL isContactSearched;
@property(nonatomic) BOOL isGroupContactSearched;
@property(retain, nonatomic) NSMutableArray *oaResults;
- (void)clearAllResults;    //  2.3.19 失效
- (void)clearDataWhenSearchEnd;
- (void)reloadSearchResultDataWithKeyword:(id)arg1 completionBlock:(id)arg2;    //  2.3.17
- (void)reloadSearchResultDataWithCompletionBlock:(id)arg1;                     //  2.3.13
- (void)reloadSearchResultDataWithKeyword:(id)arg1 resultContainer:(id)arg2 completionBlock:(id)arg3;
@property(retain, nonatomic) MMSearchResultContainer *searchResultContainer;
@end

@interface MMComplexContactSearchResult : MMBasicSearchResult
@property(retain, nonatomic) NSString *fieldValue;
@property(retain, nonatomic) WCContactData *contact;
@property(nonatomic) unsigned long long fieldType;  // 1:备注 3:昵称 4:微信号  8:省份  7:市  9:国家
@end

@interface MMComplexGroupContactMembersSearchResult : MMBasicSearchResult
@property(retain, nonatomic) NSMutableArray<MMComplexContactSearchResult *> *membersSearchReults;
@end

@interface MMComplexGroupContactSearchResult : MMBasicSearchResult
@property(nonatomic) unsigned long long searchType;     // 1 名称 2 群成员名称
@property(retain) WCContactData *groupContact;
@property(retain, nonatomic) MMComplexGroupContactMembersSearchResult *groupMembersResult;
@end

@interface MMAvatarService : NSObject
- (NSString *)avatarCachePath;
- (id)_getImageFromCacheWithMD5Key:(id)arg1;
- (void)avatarImageWithContact:(id)arg1 completion:(void (^)(NSImage *image))arg2;
- (void)getAvatarImageWithContact:(id)arg1 completion:(void (^)(NSImage *image))arg2;
@end

@interface NSString (MD5)
- (id)md5String;
@end

@interface MMSessionPickerLogic : NSObject
@property(nonatomic) NSArray *selectedUserNames;
@end


@interface MMSessionListView : NSObject
{
    MMSessionPickerLogic *m_logic;
}
@end

@interface MMSessionPickerWindow : NSWindowController
+ (id)shareInstance;
- (void)beginSheetForWindow:(id)arg1 completionHandler:(void(^)(id a1))arg2;
@property(retain, nonatomic) id choosenViewController; // @synthesize
@property(retain, nonatomic) id listViewController; // @synthesize
- (void)setShowsGroupChats:(BOOL)arg1;
- (void)setShowsOfficialAccounts:(BOOL)arg1;
- (void)setShowsOtherNonhumanChats:(BOOL)arg1;
- (void)setType:(unsigned long long)arg1;

@end

@interface AFHTTPResponseSerializer : NSObject
@end

@interface AFURLSessionManager : NSObject
- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request
                                             progress:(void (^)(NSProgress *downloadProgress))downloadProgressBlock
                                          destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination
                                    completionHandler:(void (^)(NSURLResponse *response, NSURL * filePath, NSError * error))completionHandler;
- (id)initWithSessionConfiguration:(id)arg1;
@end

@interface AFHTTPRequestSerializer : NSObject
+ (id)serializer;
@property(nonatomic) unsigned long long cachePolicy;
@end

@interface AFHTTPSessionManager : NSObject
+ (AFHTTPSessionManager *)manager;
@property(retain, nonatomic) AFHTTPRequestSerializer *requestSerializer;
@property(retain, nonatomic) AFHTTPResponseSerializer *responseSerializer;
@end

@interface MMURLHandler : NSObject
+ (id)defaultHandler;
- (void)startGetA8KeyWithURL:(id)arg1;
- (BOOL)openURLWithDefault:(id)arg1;
+ (BOOL)containsHTTPString:(id)arg1;
- (void)openURLWithDefault:(id)arg1 useA8Key:(BOOL)arg2;
- (BOOL)preHandleUrlStr:(id)arg1 withMessage:(id)arg2;
@end

@interface UserDefaultsService : NSObject
- (void)setString:(id)arg1 forKey:(id)arg2;
- (id)stringForKey:(id)arg1;
@end

@interface MMLinkInfo : NSObject
+ (NSRange)rangeOfUrlInString:(id)arg1 withRange:(NSRange)arg2;
@end

@interface MMCDNDownloadMgr : NSObject
- (BOOL)downloadImageWithMessage:(id)arg1 disableHevc:(BOOL)arg2 downloadType:(unsigned long long)arg3;
@end

@interface MMMessageVideoService : NSObject
- (BOOL)downloadVideoWithMessage:(id)arg1;
@end

@interface MMVoiceMessagePlayer : NSObject
+ (id)defaultPlayer;
- (void)playWithVoiceMessage:(id)arg1 isUnplayedBeforePlay:(BOOL)arg2;
- (void)playVoiceWithMessage:(id)arg1 isUnplayedBeforePlay:(BOOL)arg2;
- (void)stop;
@end

@interface MultiPlatformStatusSyncMgr : NSObject
- (void)markVoiceMessageAsRead:(id)arg1;
@end

@interface EmoticonDownloadMgr : NSObject
- (void)downloadEmoticonWithMessageData:(id)arg1;
@end

@interface PathUtility : NSObject
+ (id)GetCurUserCachePath;
+ (id)emoticonPath:(id)arg1;
+ (id)getMsgVideoPathWithMessage:(id)arg1;
+ (id)getMsgVideoPathWithUserName:(id)arg1 localId:(unsigned int)arg2;
@end

@interface MMExtensionCenter : NSObject
- (id)getExtension:(id)arg1;
@end

@interface MMExtension : NSObject
- (BOOL)registerExtension:(id)arg1;
- (void)unregisterExtension:(id)arg1;
- (id)getExtensionListForSelector:(SEL)arg1;
@end

@interface EmoticonMsgInfo : NSObject
@property(copy, nonatomic) NSString *cdnUrl;
@property(copy, nonatomic) NSString *m_nsMD5;
@end

@protocol EmoticonDownloadMgrExt <NSObject>
@optional
- (void)emoticonDownloadFailed:(EmoticonMsgInfo *)arg1;
- (void)emoticonDownloadFinished:(EmoticonMsgInfo *)arg1;
@end

@protocol IGroupMgrExt <NSObject>

@end

@interface MMChatMangerSearchReportMgr : NSObject
@property(retain, nonatomic) NSMutableArray *brandContactSearchResults;
@property(retain, nonatomic) NSMutableArray *chatLogSearchResults;
@property(retain, nonatomic) NSMutableArray *contactSearchResults;
@property(retain, nonatomic) NSMutableArray *groupContactSearchResults;
@end

@interface MMWebViewHelper : NSObject
+ (BOOL)preHandleWebUrlStr:(id)arg1 withMessage:(id)arg2;
@end

@interface XMLDictionaryParser : NSObject
+ (id)sharedInstance;
- (id)dictionaryWithString:(id)arg1;
@end

@interface MMEmoticonData : NSObject
@property(retain, nonatomic) NSString *md5; // @synthesize md5=_md5;
@end

@interface MMStickerPickerCell : NSView <NSMenuDelegate>
@property(retain, nonatomic) MMEmoticonData *emoticonData; // @synthesize emoticonData=_emoticonData;
@property(nonatomic) __weak NSScrollView *collectionView; 
@end

@interface MMStickerCollectionViewController : NSViewController
@property(nonatomic) __weak id delegate;
@end

@interface MMStickerPicker : NSViewController
- (void)hide;
@end

@interface MMVoiceTranslateMgr : NSObject
- (void)doTranslate:(id)arg1 isAuto:(BOOL)arg2;
- (void)updateTranscribeVoiceMessage:(id)arg1 voiceText:(id)arg2 voiceToTextStatus:(unsigned int)arg3;
@end

@interface MMAppBrandMessageCellView : NSObject
+ (id)makeAppBrandTableItemWithItem:(id)arg1;
@end

@interface MMUnsupportedCellView : NSObject
+ (id)makeUnsupportedTableItemWithItem:(id)arg1;
@end

@interface MMPayTransferCellView : NSObject
+ (id)makePayTransferTableItemWithItem:(id)arg1;
@end




================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Modules/module.modulemap
================================================
framework module WeChatPlugin {
  umbrella header "WeChatPlugin.h"

  export *
  module * { export * }
}


================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Resources/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>BuildMachineOSBuild</key>
	<string>22D68</string>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>WeChatPlugin</string>
	<key>CFBundleIdentifier</key>
	<string>tk.WeChatPlugin</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>WeChatPlugin</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>1.7.5</string>
	<key>CFBundleSupportedPlatforms</key>
	<array>
		<string>MacOSX</string>
	</array>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>DTCompiler</key>
	<string>com.apple.compilers.llvm.clang.1_0</string>
	<key>DTPlatformBuild</key>
	<string>14A400</string>
	<key>DTPlatformName</key>
	<string>macosx</string>
	<key>DTPlatformVersion</key>
	<string>12.3</string>
	<key>DTSDKBuild</key>
	<string>21E226</string>
	<key>DTSDKName</key>
	<string>macosx12.3</string>
	<key>DTXcode</key>
	<string>1401</string>
	<key>DTXcodeBuild</key>
	<string>14A400</string>
	<key>LSMinimumSystemVersion</key>
	<string>10.12</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2017年 tk. All rights reserved.</string>
	<key>showUpdateWindow</key>
	<true/>
	<key>versionInfo</key>
	<string>v1.7.5(2019-01-13):\n👉🏻  适配微信 Version. 2.3.22\n👉🏼  菜单栏新增是否允许微信启动时检测更新(非AppStore版本)\n👉🏽  优化 XML 解析\n\n\n\nv1.7.3 (2018-10-22):\n👉🏻  适配微信 Version. 2.3.19\n👉🏼  修复安全漏洞(请务必更新,若有安装QQ插件也需要更新)\n👉🏽  菜单栏-关于小助手-新增 alfred 开关(若不使用 aflred 可关闭)  \n\nv1.7.1 (2018-07-24):\n👉🏻  适配微信 Version. 2.3.17\n👉🏼  新增 alfred 搜索最近聊天列表\n👉🏽  新增 alfred 查看用户聊天记录\n     (需更新wechat-alfred-workflow)\n\nv1.7 (2018-05-12):\n👉🏻  新增不同账户设置不同的自动回复&amp;远程控制\n👉🏼  自动回复新增总开关&amp;指定联系人\n👉🏽  远程控制新增控制小助手配置\n👉🏾  新增一键已读\n👉  新增一键清除空回话\n👉🏻  新增国际化(支持英、简、繁)\n👉🏼  新增关于小助手\n👉🏽  新增在线更新小助手  \n👉🏾  去除微信url转链处理(从此直接打开抖音链接🌝 \n👉🏿  修复无法免认证登录&amp;多开等bug \n</string>
</dict>
</plist>


================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Resources/TKRemoteControlCommands.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app || open /System/Library/CoreServices/ScreenSaverEngine.app </string>
			<key>keyword</key>
			<string>ScreenSave</string>
			<key>function</key>
			<string>Assistant.Directive.ScreenSave</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>1</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend</string>
			<key>keyword</key>
			<string>LockScreen</string>
			<key>function</key>
			<string>Assistant.Directive.LockScreen</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>1</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>sleep</string>
			<key>keyword</key>
			<string>Sleep</string>
			<key>function</key>
			<string>Assistant.Directive.Sleep</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>shutdown</string>
			<key>keyword</key>
			<string>Shutdown</string>
			<key>function</key>
			<string>Assistant.Directive.Shutdown</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>restart</string>
			<key>keyword</key>
			<string>Restart</string>
			<key>function</key>
			<string>Assistant.Directive.Restart</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>empty</string>
			<key>keyword</key>
			<string>EmptyTrash</string>
			<key>function</key>
			<string>Assistant.Directive.EmptyTrash</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>mute</string>
			<key>keyword</key>
			<string>Mute</string>
			<key>function</key>
			<string>Assistant.Directive.Mute</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
	</array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>killQQ</string>
			<key>keyword</key>
			<string>KillQQ</string>
			<key>function</key>
			<string>Assistant.Directive.KillQQ</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killWeChat</string>
			<key>keyword</key>
			<string>killWeChat</string>
			<key>function</key>
			<string>Assistant.Directive.KillWeChat</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killChrome</string>
			<key>keyword</key>
			<string>KillChrome</string>
			<key>function</key>
			<string>Assistant.Directive.KillChrome</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killSafari</string>
			<key>keyword</key>
			<string>KillSafari</string>
			<key>function</key>
			<string>Assistant.Directive.KillSafari</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killFirefox</string>
			<key>keyword</key>
			<string>killFirefox</string>
			<key>function</key>
			<string>Assistant.Directive.KillFirefox</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killAll</string>
			<key>keyword</key>
			<string>KillAll</string>
			<key>function</key>
			<string>Assistant.Directive.KillAll</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
	</array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>musicToggle</string>
			<key>keyword</key>
			<string>Toggle</string>
			<key>function</key>
			<string>Assistant.Directive.Toggle</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicNext</string>
			<key>keyword</key>
			<string>Next</string>
			<key>function</key>
			<string>Assistant.Directive.Next</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicPrevious</string>
			<key>keyword</key>
			<string>Previous</string>
			<key>function</key>
			<string>Assistant.Directive.Previous</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicVolumeUp</string>
			<key>keyword</key>
			<string>VolumeUp</string>
			<key>function</key>
			<string>Assistant.Directive.VolumeUp</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicVolumeDown</string>
			<key>keyword</key>
			<string>VolumeDown</string>
			<key>function</key>
			<string>Assistant.Directive.VolumeDown</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicLike</string>
			<key>keyword</key>
			<string>LikeChange</string>
			<key>function</key>
			<string>Assistant.Directive.LikeChange</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
	</array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>getDirectiveList</string>
			<key>keyword</key>
			<string>getDirective</string>
			<key>function</key>
			<string>Assistant.Directive.GetList</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>PreventRevokeSwitch</string>
			<key>keyword</key>
			<string>PreventRevokeSwitch</string>
			<key>function</key>
			<string>Assistant.Directive.PreventRevokeSwitch</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>AutoReplySwitch</string>
			<key>keyword</key>
			<string>AutoReplySwitch</string>
			<key>function</key>
			<string>Assistant.Directive.AutoReplySwitch</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>AutoAuthSwitch</string>
			<key>keyword</key>
			<string>AutoAuthSwitch</string>
			<key>function</key>
			<string>Assistant.Directive.AutoAuthSwitch</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
	</array>
</array>
</plist>


================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Resources/en.lproj/about.rtfd/TXT.rtf
================================================
{\rtf1\ansi\ansicpg936\cocoartf1671
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue-Light;\f1\fnil\fcharset0 HelveticaNeue;\f2\fnil\fcharset0 HelveticaNeue-Bold;
\f3\fnil\fcharset134 PingFangSC-Regular;}
{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red32\green124\blue169;}
{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c14510\c56078\c72157;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
\margl1440\margr1440\vieww13760\viewh11300\viewkind0
\hyphauto1\hyphfactor90
\deftab720
\pard\pardeftab720\qc\partightenfactor0

\f0\fs34 \cf2 \expnd0\expndtw0\kerning0
Github: {\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS"}}{\fldrslt \cf3 WeChatPlugin-MacOS}}\
Email: {\field{\*\fldinst{HYPERLINK "mailto:tkk.ioser@gmail.com"}}{\fldrslt \cf3 tkk.ioser@gmail.com}}
\f1 \
\pard\pardeftab720\sl288\slmult1\qc\partightenfactor0

\fs28 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs34 \cf2 Feature
\fs47\fsmilli23660 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl264\slmult1\partightenfactor0
\ls1\ilvl0
\f0\b0\fs30 \cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Message auto reply\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Prevent message recall\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Remote control(support voice control)\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Multiple WeChat\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Auto Auth Login\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Session Sticky Bottom\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Windows Sticky Top\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Session multiple delete\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Auto Login Switch\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Quick reply to notifications\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Copy or Export Sticker\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Update plugin\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Reply or Open session by Alfred
\f3\fs32 \
}

================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Resources/zh-Hans.lproj/about.rtfd/TXT.rtf
================================================
{\rtf1\ansi\ansicpg936\cocoartf1671
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue-Light;\f1\fnil\fcharset0 HelveticaNeue;\f2\fnil\fcharset134 PingFangSC-Semibold;
\f3\fnil\fcharset0 HelveticaNeue-Bold;\f4\fnil\fcharset134 PingFangSC-Regular;\f5\fnil\fcharset0 AppleColorEmoji;
}
{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red32\green124\blue169;\red255\green255\blue255;
\red52\green110\blue183;}
{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c14510\c56078\c72157;\cssrgb\c100000\c100000\c100000;
\cssrgb\c25490\c51373\c76863;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}
{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid201\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid3}
{\list\listtemplateid4\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid301\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid4}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}}
\margl1440\margr1440\vieww13760\viewh11300\viewkind0
\hyphauto1\hyphfactor90
\deftab720
\pard\pardeftab720\qc\partightenfactor0

\f0\fs36\fsmilli18200 \cf2 \expnd0\expndtw0\kerning0
Github: {\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS"}}{\fldrslt \cf3 WeChatPlugin-MacOS}}\
Email: {\field{\*\fldinst{HYPERLINK "mailto:tkk.ioser@gmail.com"}}{\fldrslt \cf3 tkk.ioser@gmail.com}}
\f1\fs32 \
\pard\pardeftab720\sl288\slmult1\qc\partightenfactor0

\fs28 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b9\'a6\'c4\'dc
\f3\fs48 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl216\slmult1\partightenfactor0
\ls1\ilvl0
\f1\b0\fs32 \cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'d7\'d4\'b6\'af\'bb\'d8\'b8\'b4
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'b7\'c0\'b3\'b7\'bb\'d8
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d4\'b6\'b3\'cc\'bf\'d8\'d6\'c6
\f1 (
\f4 \'d2\'d1\'d6\'a7\'b3\'d6\'d3\'ef\'d2\'f4
\f1 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b6\'e0\'bf\'aa
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'b5\'da\'b6\'fe\'b4\'ce\'b5\'c7\'c2\'bc\'c3\'e2\'c8\'cf\'d6\'a4
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'d6\'c3\'b5\'d7\'b9\'a6\'c4\'dc
\f1 (
\f4 \strike \strikec2 \'c0\'e0\'cb\'c6\'d6\'c3\'b6\'a5
\f1 \strike0\striked0 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b4\'b0\'bf\'da\'d6\'c3\'b6\'a5
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'bb\'e1\'bb\'b0\'b6\'e0\'d1\'a1\'c9\'be\'b3\'fd
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d7\'d4\'b6\'af\'b5\'c7\'c2\'bc\'bf\'aa\'b9\'d8
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cd\'a8\'d6\'aa\'d6\'d0\'d0\'c4\'bf\'ec\'bd\'dd\'bb\'d8\'b8\'b4
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da\'b1\'ed\'c7\'e9\'b0\'fc\'b8\'b4\'d6\'c6
\f1  & 
\f4 \'b4\'e6\'b4\'a2
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d0\'a1\'d6\'fa\'ca\'d6\'bc\'ec\'b2\'e2\'b8\'fc\'d0\'c2\'cc\'e1\'d0\'d1
\f1 \
\pard\tx0\tx220\pardeftab720\fi-1\sl216\slmult1\partightenfactor0
\ls1\ilvl0\cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
alfred 
\f4 \'bf\'ec\'bd\'dd\'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
\f1  & 
\f4 \'b4\'f2\'bf\'aa\'b4\'b0\'bf\'da\
\pard\tx0\tx220\pardeftab720\fi-1\sl216\slmult1\partightenfactor0
\ls1\ilvl0
\f1 \cf2 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'bb\'e1\'bb\'b0\'d2\'bb\'bc\'fc\'d2\'d1\'b6\'c1
\f1 \cb1 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0
\ls1\ilvl0\cf2 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d2\'bb\'bc\'fc\'c7\'e5\'b3\'fd\'bf\'d5\'bb\'e1\'bb\'b0
\f1 \cb1 \
\ls1\ilvl0\cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d6\'a7\'b3\'d6\'b9\'fa\'bc\'ca\'bb\'af
\f1  \cb1 \
\ls1\ilvl0\cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d2\'bb\'bc\'fc\'b8\'fc\'d0\'c2
\f1 \cb1 \
\ls1\ilvl0\cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c8\'a5\'b3\'fd\'ce\'a2\'d0\'c5
\f1 url
\f4 \'d7\'aa\'c1\'b4\'a3\'a8\'b4\'d3\'b4\'cb\'d6\'b1\'bd\'d3\'b4\'f2\'bf\'aa\'b6\'b6\'d2\'f4\'c1\'b4\'bd\'d3
\f5 \uc0\u55356 \u57117 \
\ls1\ilvl0
\f1 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
alfred 
\f4 \'cb\'d1\'cb\'f7\'d7\'ee\'bd\'fc\'c1\'c4\'cc\'ec\'a1\'a2\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc
\f5 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0

\f1 \cf2 \kerning1\expnd0\expndtw0 	\'95	
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d2\'c6\'b3\'fd\'bb\'e1\'bb\'b0(\'b2\'bb\'c9\'be\'b3\'fd\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc)\cb1 \

\f1 \cf5 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b8\'fc\'d0\'c2\'c8\'d5\'d6\'be\
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0
\ls2\ilvl0
\f1\b0\fs32 \cf5 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\ul \'ca\'ca\'c5\'e4
\f1 2.3.17 & 
\f4 \'bc\'d3\'c7\'bf
\f1  alfred 
\f4 \'cb\'d1\'cb\'f7
\f1 (2018-07-24)}}
\f2\b\fs36 \cf2 \cb1 \expnd0\expndtw0\kerning0
\
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0
\ls3\ilvl0
\f1\b0\fs32 \cf5 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\ul \'d0\'c2\'d4\'f6\'ba\'c3\'b6\'e0\'b9\'a6\'c4\'dc
\f1 \'85(2018-05-12)}}
\f3\b\fs36 \cf2 \cb1 \expnd0\expndtw0\kerning0
\
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl264\slmult1\partightenfactor0
\ls4\ilvl0
\f1\b0\fs32 \cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d7\'d4\'b6\'af\'bb\'d8\'b8\'b4\'d1\'d3\'b3\'d9
\f1  & 
\f4 \'d0\'de\'b8\'c4\'d6\'c3\'b6\'a5\'b4\'b0\'bf\'da\'bf\'ec\'bd\'dd
\f1 (2018-04-07)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6
\f1  Alfred 
\f4 \'bf\'ec\'bd\'dd\'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
\f1  & 
\f4 \'b4\'f2\'bf\'aa\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da
\f1 (2018-03-18)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d3\'ef\'d2\'f4\'d4\'b6\'b3\'cc\'bf\'d8\'d6\'c6
\f1 mac & 
\f4 \'d3\'c5\'bb\'af\'b3\'b7\'bb\'d8\'cf\'fb\'cf\'a2\'a1\'a2\'bf\'ec\'bd\'dd\'bb\'d8\'b8\'b4
\f1 (2018-03-03)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d0\'a1\'d6\'fa\'ca\'d6\'bc\'ec\'b2\'e2\'b8\'fc\'d0\'c2
\f1 &
\f4 \'b1\'ed\'c7\'e9\'b0\'fc\'b8\'b4\'d6\'c6\'b4\'e6\'b4\'a2\'b5\'c8\'b5\'c8
\f1  (2018-02-24)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.4.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'b4\'b0\'bf\'da\'d6\'c3\'b6\'a5
\f1 &
\f4 \'b6\'e0\'d1\'a1\'c9\'be\'b3\'fd\'b5\'c8\'b5\'c8
\f1  (2017-10-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.3.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d6\'c3\'b5\'d7
\f1 &
\f4 \'c3\'e2\'c8\'cf\'d6\'a4
\f1  (2017-09-17)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.2.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'de\'b8\'b4\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'cf\'fb\'ca\'a7\'b5\'c4
\f1 bug (2017-09-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.1.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d6\'d8\'b9\'b9\'d7\'d4\'b6\'af\'bb\'d8\'b8\'b4\'a3\'ac\'ca\'b5\'cf\'d6\'b6\'e0\'bb\'d8\'b8\'b4
\f1  (2017-08-23)}}\cf2 \expnd0\expndtw0\kerning0
\
\pard\pardeftab720\sl264\slmult1\partightenfactor0

\f2\b \cf2 \'cf\'ea\'cf\'b8\'c4\'da\'c8\'dd\'c7\'eb\'b2\'e9\'bf\'b4{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/blob/master/CHANGELOG.md"}}{\fldrslt 
\f1\b0 \cf5 CHANGELOG}}
\f1\b0 \cf5 \
}

================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Resources/zh-Hant.lproj/about.rtfd/TXT.rtf
================================================
{\rtf1\ansi\ansicpg936\cocoartf1671
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue-Light;\f1\fnil\fcharset0 HelveticaNeue;\f2\fnil\fcharset134 PingFangSC-Semibold;
\f3\fnil\fcharset0 HelveticaNeue-Bold;\f4\fnil\fcharset134 PingFangSC-Light;}
{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red32\green124\blue169;}
{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c14510\c56078\c72157;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}
\margl1440\margr1440\vieww13760\viewh11300\viewkind0
\hyphauto1\hyphfactor90
\deftab720
\pard\pardeftab720\qc\partightenfactor0

\f0\fs36\fsmilli18200 \cf2 \expnd0\expndtw0\kerning0
Github: {\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS"}}{\fldrslt \cf3 WeChatPlugin-MacOS}}\
Email: {\field{\*\fldinst{HYPERLINK "mailto:tkk.ioser@gmail.com"}}{\fldrslt \cf3 tkk.ioser@gmail.com}}
\f1\fs32 \
\pard\pardeftab720\sl288\slmult1\qc\partightenfactor0

\fs28 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b9\'a6\'c4\'dc
\f3\fs47\fsmilli23660 \cf2 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0
\ls1\ilvl0
\f0\b0\fs32 \cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'d7\'d4\'84\'d3\'bb\'d8\'8f\'cd
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'b7\'c0\'b3\'b7\'bb\'d8
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'df\'68\'b3\'cc\'bf\'d8\'d6\'c6
\f0 (
\f4 \'d2\'d1\'d6\'a7\'b3\'d6\'d5\'5a\'d2\'f4
\f0 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b6\'e0\'e9\'5f
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'b5\'da\'b6\'fe\'b4\'ce\'b5\'c7\'e4\'9b\'c3\'e2\'d5\'4a\'d7\'43
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'d6\'c3\'b5\'d7\'b9\'a6\'c4\'dc
\f0 (
\f4 \strike \strikec2 \'ee\'90\'cb\'c6\'d6\'c3\'ed\'94
\f0 \strike0\striked0 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b4\'b0\'bf\'da\'d6\'c3\'ed\'94
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'95\'fe\'d4\'92\'b6\'e0\'df\'78\'84\'68\'b3\'fd
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d7\'d4\'84\'d3\'b5\'c7\'e4\'9b\'e9\'5f\'ea\'50
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cd\'a8\'d6\'aa\'d6\'d0\'d0\'c4\'bf\'ec\'bd\'dd\'bb\'d8\'8f\'cd
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da\'b1\'ed\'c7\'e9\'b0\'fc\'8f\'cd\'d6\'c6
\f0  & 
\f4 \'b4\'e6\'83\'a6
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d0\'a1\'d6\'fa\'ca\'d6\'99\'7a\'9c\'79\'b8\'fc\'d0\'c2\'cc\'e1\'d0\'d1
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
alfred 
\f4 \'bf\'ec\'bd\'dd\'b0\'6c\'cb\'cd\'cf\'fb\'cf\'a2
\f0  & 
\f4 \'b4\'f2\'e9\'5f\'b4\'b0\'bf\'da
\f0  \
\pard\tx566\pardeftab720\partightenfactor0

\fs36\fsmilli18200 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b8\'fc\'d0\'c2\'c8\'d5\'d5\'49
\f3\fs47\fsmilli23660 \cf2 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl264\slmult1\partightenfactor0
\ls2\ilvl0
\f0\b0\fs32 \cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d7\'d4\'84\'d3\'bb\'d8\'8f\'cd\'d1\'d3\'df\'74
\f0  & 
\f4 \'d0\'de\'b8\'c4\'d6\'c3\'ed\'94\'b4\'b0\'bf\'da\'bf\'ec\'bd\'dd
\f0 (2018-04-07)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6
\f0  Alfred 
\f4 \'bf\'ec\'bd\'dd\'b0\'6c\'cb\'cd\'cf\'fb\'cf\'a2
\f0  & 
\f4 \'b4\'f2\'e9\'5f\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da
\f0 (2018-03-18)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d5\'5a\'d2\'f4\'df\'68\'b3\'cc\'bf\'d8\'d6\'c6
\f0 mac & 
\f4 \'83\'9e\'bb\'af\'b3\'b7\'bb\'d8\'cf\'fb\'cf\'a2\'a1\'a2\'bf\'ec\'bd\'dd\'bb\'d8\'8f\'cd
\f0 (2018-03-03)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d0\'a1\'d6\'fa\'ca\'d6\'99\'7a\'9c\'79\'b8\'fc\'d0\'c2
\f0 &
\f4 \'b1\'ed\'c7\'e9\'b0\'fc\'8f\'cd\'d6\'c6\'b4\'e6\'83\'a6\'b5\'c8\'b5\'c8
\f0  (2018-02-24)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.4.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'b4\'b0\'bf\'da\'d6\'c3\'ed\'94
\f0 &
\f4 \'b6\'e0\'df\'78\'84\'68\'b3\'fd\'b5\'c8\'b5\'c8
\f0  (2017-10-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.3.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d6\'c3\'b5\'d7
\f0 &
\f4 \'c3\'e2\'d5\'4a\'d7\'43
\f0  (2017-09-17)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.2.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'de\'8f\'cd\'c1\'c4\'cc\'ec\'d3\'9b\'e4\'9b\'cf\'fb\'ca\'a7\'b5\'c4
\f0 bug (2017-09-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.1.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d6\'d8\'98\'8b\'d7\'d4\'84\'d3\'bb\'d8\'8f\'cd\'a3\'ac\'8c\'8d\'ac\'46\'b6\'e0\'bb\'d8\'8f\'cd
\f0  (2017-08-23)}}\cf2 \expnd0\expndtw0\kerning0
\
\pard\pardeftab720\sl264\slmult1\partightenfactor0

\f2\b \cf2 \'d4\'94\'bc\'9a\'83\'c8\'c8\'dd\'d5\'88\'b2\'e9\'bf\'b4{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/blob/master/CHANGELOG.md"}}{\fldrslt 
\f0\b0 \cf3 CHANGELOG}}
\f0\b0\fs36\fsmilli18200 \cf2 \
}

================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/A/Headers/WeChatPlugin.h
================================================
//
//  WeChatPlugin.h
//  WeChatPlugin
//
//  Created by TK on 2017/4/19.
//  Copyright © 2017年 tk. All rights reserved.
//

#import <Cocoa/Cocoa.h>
#import "TKWeChatPluginConfig.h"
#import "TKHelper.h"

FOUNDATION_EXPORT double WeChatPluginVersionNumber;
FOUNDATION_EXPORT const unsigned char WeChatPluginVersionString[];

@class WCContactData;

#pragma mark - 微信原始的部分类与方法

@interface MMSystemLinkInfo : NSObject
@property(retain, nonatomic) NSMutableAttributedString *msgContent;

@end
@interface MMContactProfileController : NSViewController
@property(copy, nonatomic) NSString *groupName;
@property(nonatomic) struct CGRect relativeToRect;
@property(nonatomic) unsigned long long preferredEdge;
@property(retain, nonatomic) WCContactData *contactData;
- (void)sendGetContactRequest:(id)arg1 withGroupName:(id)arg2;
- (void)showInView:(id)arg1;
@end


@interface MMBrandChatsViewController : NSObject
- (void)startChatWithContact:(id)arg1;
@end

@interface MMLoginOneClickViewController : NSViewController
@property(nonatomic) NSTextField *descriptionLabel;
- (void)onLoginButtonClicked:(id)arg1;
@property(nonatomic) NSButton *loginButton;
@end

@interface AccountService : NSObject
- (id)GetLastLoginUserName;
- (id)GetLastLoginAutoAuthKey;
- (BOOL)canAutoAuth;
- (void)AutoAuth;
- (void)ManualLogin:(id)arg1 withPassword:(id)arg2;
- (void)ManualLogout;
- (void)FFAddSvrMsgImgVCZZ;
- (void)QRCodeLoginWithUserName:(id)arg1 password:(id)arg2;
- (void)onAuthOKOfUser:(id)arg1 withSessionKey:(id)arg2 withServerId:(id)arg3 autoAuthKey:(id)arg4 isAutoAuth:(BOOL)arg5;
@end

@interface MMLoginViewController : NSObject
@property(retain, nonatomic) MMLoginOneClickViewController *oneClickViewController;
@end

@interface MMHandoffButton : NSView
@end

@interface MMMainViewController : NSObject
@property(nonatomic) __weak MMHandoffButton *handoffButton;
@end

@interface MMMainWindowController : NSWindowController
@property(retain, nonatomic) MMLoginViewController *loginViewController;
@property(retain, nonatomic) MMMainViewController *mainViewController;
- (void)onAuthOK;
- (void)onLogOut;
@end

@interface MMVoiceTranscribeCGI : NSObject
- (void)transcribeVoiceMessage:(id)arg1 withCompletion:(void (^)(void))arg2;
@end

@interface FFProcessReqsvrZZ : NSObject
- (void)onRevokeMsg:(id)arg1;
- (void)FFToNameFavChatZZ:(id)arg1;
- (void)FFToNameFavChatZZ:(id)arg1 sessionMsgList:(id)arg2;
- (void)OnSyncBatchAddMsgs:(NSArray *)arg1 isFirstSync:(BOOL)arg2;
- (void)FFImgToOnFavInfoInfoVCZZ:(id)arg1 isFirstSync:(BOOL)arg2;
- (id)FFProcessTReqZZ:(id)arg1 toUsrName:(id)arg2 msgText:(id)arg3 atUserList:(id)arg4;
- (id)GetMsgData:(id)arg1 svrId:(long)arg2;
- (void)AddLocalMsg:(id)arg1 msgData:(id)arg2;
- (void)TranscribeVoiceMessage:(id)arg1 completion:(void (^)(void))arg2;
- (BOOL)ClearUnRead:(id)arg1 FromID:(unsigned int)arg2 ToID:(unsigned int)arg3;
- (BOOL)ClearUnRead:(id)arg1 FromCreateTime:(unsigned int)arg2 ToCreateTime:(unsigned int)arg3;
- (BOOL)HasMsgInChat:(id)arg1;
- (id)GetMsgListWithChatName:(id)arg1 fromCreateTime:(unsigned int)arg2 localId:(NSInteger)arg3 limitCnt:(NSInteger)arg4 hasMore:(char *)arg5 sortAscend:(BOOL)arg6;
- (void)DelMsg:(id)arg1 msgList:(id)arg2 isDelAll:(BOOL)arg3 isManual:(BOOL)arg4;
@end

@interface MMServiceCenter : NSObject
+ (id)defaultCenter;
- (id)getService:(Class)arg1;
@end

@interface SKBuiltinString_t : NSObject
@property(retain, nonatomic, setter=SetString:) NSString *string; // @synthesize string;
@end

@interface AddMsg : NSObject
@property(retain, nonatomic, setter=SetContent:) SKBuiltinString_t *content; // @synthesize content;
@property(retain, nonatomic, setter=SetFromUserName:) SKBuiltinString_t *fromUserName; // @synthesize fromUserName;
@property(nonatomic, setter=SetMsgType:) int msgType; // @synthesize msgType;
@property(retain, nonatomic, setter=SetToUserName:) SKBuiltinString_t *toUserName; // @synthesize toUserName;
@property (nonatomic, assign) unsigned int createTime;
@property(nonatomic, setter=SetNewMsgId:) long long newMsgId;
@end

@interface MMChatMessageViewController : NSViewController
@property(retain, nonatomic) WCContactData *chatContact;
@property(nonatomic) __weak NSTableView *messageTableView;
- (void)scrollToMessage:(NSUInteger)arg1;
- (BOOL)showLocatedMessage:(NSUInteger)arg1;
- (BOOL)showLocatedMessage:(unsigned int)arg1 needHighLighted:(BOOL)arg2;
- (void)onClickSession;
- (void)reloadTableView;
@end

@interface MMChatDetailSplitViewController : NSObject
@property(retain, nonatomic) MMChatMessageViewController *chatMessageViewController;
@end

@interface MMChatsViewController : NSViewController <NSTableViewDataSource, NSTableViewDelegate>
@property(nonatomic) __weak NSTableView *tableView;
@property(retain, nonatomic) MMBrandChatsViewController *brandChatsViewController;
@property(retain, nonatomic) MMChatDetailSplitViewController *chatDetailSplitViewController;
@end

@interface WeChat : NSObject
+ (id)sharedInstance;
@property(nonatomic) MMChatsViewController *chatsViewController;
@property(retain, nonatomic) MMMainWindowController *mainWindowController;
@property(nonatomic) BOOL isAppTerminating;
@property(nonatomic) BOOL hasAuthOK;
- (void)startANewChatWithContact:(id)arg1;
- (void)_clearAllUnreadMessages:(id)arg1;
- (void)onAuthOK:(BOOL)arg1;
- (void)checkForUpdatesInBackground;
- (void)FFAddRecvFavZZ:(BOOL)arg1;
@end

@interface ContactStorage : NSObject
- (id)GetSelfContact;
- (id)GetContact:(id)arg1;
- (id)GetAllBrandContacts;
- (id)GetAllFavContacts;
- (id)GetAllFriendContacts;
@end

@interface GroupStorage : NSObject
{
    NSMutableDictionary *m_dictGroupContacts;
}
- (id)GetAllGroups;
- (id)GetGroupMemberContact:(id)arg1;
- (void)notifyModifyGroupContactsOnMainThread:(id)arg1;
//- (id)GetGroupMemberListWithGroupContact:(id)arg1;
- (id)GetGroupMemberListWithGroupContact:(id)arg1 limit:(unsigned int)arg2 filterSelf:(BOOL)arg3;
@end

@interface ChatRoomData : NSObject
{
    NSMutableDictionary *m_dicData;
}
@end

@interface WCContactData : NSObject
@property(retain, nonatomic) NSString *m_nsUsrName; // @synthesize m_nsUsrName;
@property(nonatomic) unsigned int m_uiFriendScene;  // @synthesize m_uiFriendScene;
@property(retain, nonatomic) NSString *m_nsNickName;    // 用户昵称
@property(retain, nonatomic) NSString *m_nsRemark;      // 备注
@property(retain, nonatomic) NSString *m_nsHeadImgUrl;  // 头像
@property(retain, nonatomic) NSString *m_nsHeadHDImgUrl;
@property(retain, nonatomic) NSString *m_nsHeadHDMd5;
@property(retain, nonatomic) NSString *m_nsAliasName;
@property(retain, nonatomic) NSString *avatarCacheKey;
@property(readonly, nonatomic) unsigned long long groupMemberCount;
@property(retain, nonatomic) ChatRoomData *m_chatRoomData;
@property(nonatomic) BOOL m_isShowRedDot;
- (BOOL)isBrandContact;
- (BOOL)isSelf;
- (id)innerGetGroupDisplayName;
- (NSString *)groupChatDisplayNameInGroup:(id)arg1;
- (id)getContactDisplayUsrName;
- (BOOL)isGroupChat;
- (BOOL)isMMChat;
- (BOOL)isMMContact;
- (BOOL)containsMember:(id)arg1;
- (id)displayRegion;
- (BOOL)isStickyFolder;
@end

@interface WCPayInfoItem : NSObject
@property(retain, nonatomic) NSString *m_nsFeeDesc;
@end

@interface MessageData : NSObject
- (id)initWithMsgType:(long long)arg1;
@property(retain, nonatomic) NSString *fromUsrName;
@property(retain, nonatomic) NSString *toUsrName;
@property(retain, nonatomic) NSString *msgContent;
@property(retain, nonatomic) NSString *msgPushContent;
@property(retain, nonatomic) NSString *realChatUserName;
@property(retain, nonatomic) WCPayInfoItem *m_oWCPayInfoItem; // @dynamic m_oWCPayInfoItem;
@property(retain, nonatomic) NSString *m_nsAppName;
@property(retain, nonatomic) NSString *m_nsSourceDisplayname;
@property(nonatomic) int messageType;
@property(nonatomic) int msgStatus;
@property(nonatomic) int msgCreateTime;
@property(nonatomic) int mesLocalID;
@property(nonatomic) long long mesSvrID;
@property(retain, nonatomic) NSString *msgVoiceText;
@property(copy, nonatomic) NSString *m_nsEmoticonMD5;
- (BOOL)isChatRoomMessage;
- (NSString *)groupChatSenderDisplayName;
- (id)getRealMessageContent;
- (id)getChatRoomUsrName;
- (BOOL)isSendFromSelf;
- (BOOL)isCustomEmojiMsg;
- (BOOL)isImgMsg;
- (BOOL)isVideoMsg;
- (BOOL)isVoiceMsg;
- (BOOL)canForward;
- (BOOL)IsPlayingSound;
- (id)summaryString:(BOOL)arg1;
- (BOOL)isEmojiAppMsg;
- (BOOL)isAppBrandMsg;
- (BOOL)IsUnPlayed;
- (void)SetPlayed;
@property(retain, nonatomic) NSString *m_nsTitle;
- (id)originalImageFilePath;
@property(retain, nonatomic) NSString *m_nsVideoPath;
@property(retain, nonatomic) NSString *m_nsFilePath;
@property(retain, nonatomic) NSString *m_nsAppMediaUrl;
@property(nonatomic) MessageData *m_refMessageData;
@property(nonatomic) unsigned int m_uiDownloadStatus;
- (void)SetPlayingSoundStatus:(BOOL)arg1;
@end

@interface CUtility : NSObject
+ (BOOL)HasWechatInstance;
+ (BOOL)FFSvrChatInfoMsgWithImgZZ;
+ (unsigned long long)getFreeDiskSpace;
+ (void)ReloadSessionForMsgSync;
+ (id)GetCurrentUserName;
+ (id)GetContactByUsrName:(id)arg1;
+ (BOOL)IsStickyChatsFolder:(id)arg1;
@end

@interface MMSessionInfoPackedInfo: NSObject
@property(retain, nonatomic) WCContactData *m_contact;
@property(retain, nonatomic) MessageData *m_msgData;
@end

@interface MMSessionInfo : NSObject
@property(nonatomic) BOOL m_bIsTop; // @synthesize m_bIsTop;
@property(nonatomic) BOOL m_bShowUnReadAsRedDot;
@property(nonatomic) BOOL m_isMentionedUnread; // @synthesize
@property BOOL isInGroupBox; 
@property(retain, nonatomic) NSString *m_nsUserName; // @synthesize m_nsUserName;
@property(retain, nonatomic) MMSessionInfoPackedInfo *m_packedInfo;
@property(nonatomic) unsigned int m_uUnReadCount; 
@end

@protocol MMChatsTableCellViewDelegate <NSObject>
@optional
- (void)cellViewReloadData:(MMSessionInfo *)arg1;
@end

@interface MMChatsTableCellView : NSTableCellView
@property(nonatomic) __weak id <MMChatsTableCellViewDelegate> delegate;
@property(retain, nonatomic) MMSessionInfo *sessionInfo;
- (void)menuWillOpen:(id)arg1;
- (void)contextMenuSticky:(id)arg1;
- (void)contextMenuDelete:(id)arg1;
- (void)tableView:(NSTableView *)arg1 rowGotMouseDown:(long long)arg2;
@end

@interface MMSessionMgr : NSObject
//@property(retain, nonatomic) NSMutableArray *m_arrSession;
- (id)getSessionAtIndex:(unsigned long long)arg1;
- (id)sessionInfoByUserName:(id)arg1;
- (void)muteSessionByUserName:(id)arg1;
- (void)onUnReadCountChange:(id)arg1;
//- (void)TopSessionByUserName:(id)arg1;
- (void)unmuteSessionByUserName:(id)arg1;
- (void)untopSessionByUserName:(id)arg1;
- (void)changeSessionUnreadCountWithUserName:(id)arg1 to:(unsigned int)arg2;
- (void)removeSessionOfUser:(id)arg1 isDelMsg:(BOOL)arg2;
- (void)sortSessions;
- (void)FFDataSvrMgrSvrFavZZ;
- (id)getContact:(id)arg1;
- (id)getSessionContact:(id)arg1;
- (void)onModifyContacts:(id)arg1;
- (NSMutableArray *)getAllSessions;
@end

@interface LogoutCGI : NSTableCellView
- (void)sendLogoutCGIWithCompletion:(id)arg1;
- (void)FFVCRecvDataAddDataToMsgChatMgrRecvZZ:(id)arg1;
@end

@interface MMNotificationService : NSObject
- (id)getNotificationContentWithMsgData:(id)arg1;
- (void)userNotificationCenter:(id)arg1 didActivateNotification:(id)arg2;
@end

@interface MMMessageTableItem : NSObject
@property(retain, nonatomic) MessageData *message;
@end

@interface MMStickerMessageCellView : NSObject
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
@property(nonatomic) MMChatMessageViewController *delegate;
- (BOOL)allowCopy;
- (void)contextMenuCopy;
- (id)contextMenu;
@end

@interface MMImageMessageCellView: NSObject
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
@end

@interface MMSystemMessageCellView: NSObject
@property(nonatomic) id delegate; 
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
@property(retain, nonatomic) NSTextView *msgTextView;
- (void)populateWithMessage:(id)arg1;
@end
@interface EmoticonMgr : NSObject
@property(retain, nonatomic) MessageData *message;
- (id)getEmotionDataWithMD5:(id)arg1;
- (id)getEmotionImgWithMD5:(id)arg1;
- (void)addFavEmoticon:(id)arg1;
- (void)addEmoticonToUploadQueueWithMD5:(id)arg1;
- (void)setAppStickerToastViewDelegate:(id)arg1;
@end

@interface MMComplexContactSearchTaskMgr : NSObject
+ (id)sharedInstance;
- (void)doComplexContactSearch:(id)arg1 searchScene:(unsigned long long)arg2 complete:(void (^)(NSString *,NSArray *, NSArray *, NSArray *,id))arg3 cancelable:(BOOL)arg4;
@end

@interface MMBasicSearchResult : NSObject
@end

@interface MMSearchResultItem : NSObject
@property(retain, nonatomic) MMBasicSearchResult *result;
@end

@interface MMSearchResultContainer : NSObject
@property(nonatomic) unsigned long long logicSearchResultFlag; // @synthesize
@end

@interface MMContactSearchLogic : NSObject
{
    unsigned long long _logicSearchResultFlag;      // 2.3.19 失效
}
@property(retain, nonatomic) NSMutableArray *contactResults;
- (void)doSearchWithKeyword:(id)arg1 searchScene:(unsigned long long)arg2 resultIsShownBlock:(id)arg3 completion:(id)arg4;
@property(retain, nonatomic) NSMutableArray *groupResults;
@property(nonatomic) BOOL isBrandContactSearched;
@property(nonatomic) BOOL isChatLogSearched;
@property(nonatomic) BOOL isContactSearched;
@property(nonatomic) BOOL isGroupContactSearched;
@property(retain, nonatomic) NSMutableArray *oaResults;
- (void)clearAllResults;    //  2.3.19 失效
- (void)clearDataWhenSearchEnd;
- (void)reloadSearchResultDataWithKeyword:(id)arg1 completionBlock:(id)arg2;    //  2.3.17
- (void)reloadSearchResultDataWithCompletionBlock:(id)arg1;                     //  2.3.13
- (void)reloadSearchResultDataWithKeyword:(id)arg1 resultContainer:(id)arg2 completionBlock:(id)arg3;
@property(retain, nonatomic) MMSearchResultContainer *searchResultContainer;
@end

@interface MMComplexContactSearchResult : MMBasicSearchResult
@property(retain, nonatomic) NSString *fieldValue;
@property(retain, nonatomic) WCContactData *contact;
@property(nonatomic) unsigned long long fieldType;  // 1:备注 3:昵称 4:微信号  8:省份  7:市  9:国家
@end

@interface MMComplexGroupContactMembersSearchResult : MMBasicSearchResult
@property(retain, nonatomic) NSMutableArray<MMComplexContactSearchResult *> *membersSearchReults;
@end

@interface MMComplexGroupContactSearchResult : MMBasicSearchResult
@property(nonatomic) unsigned long long searchType;     // 1 名称 2 群成员名称
@property(retain) WCContactData *groupContact;
@property(retain, nonatomic) MMComplexGroupContactMembersSearchResult *groupMembersResult;
@end

@interface MMAvatarService : NSObject
- (NSString *)avatarCachePath;
- (id)_getImageFromCacheWithMD5Key:(id)arg1;
- (void)avatarImageWithContact:(id)arg1 completion:(void (^)(NSImage *image))arg2;
- (void)getAvatarImageWithContact:(id)arg1 completion:(void (^)(NSImage *image))arg2;
@end

@interface NSString (MD5)
- (id)md5String;
@end

@interface MMSessionPickerLogic : NSObject
@property(nonatomic) NSArray *selectedUserNames;
@end


@interface MMSessionListView : NSObject
{
    MMSessionPickerLogic *m_logic;
}
@end

@interface MMSessionPickerWindow : NSWindowController
+ (id)shareInstance;
- (void)beginSheetForWindow:(id)arg1 completionHandler:(void(^)(id a1))arg2;
@property(retain, nonatomic) id choosenViewController; // @synthesize
@property(retain, nonatomic) id listViewController; // @synthesize
- (void)setShowsGroupChats:(BOOL)arg1;
- (void)setShowsOfficialAccounts:(BOOL)arg1;
- (void)setShowsOtherNonhumanChats:(BOOL)arg1;
- (void)setType:(unsigned long long)arg1;

@end

@interface AFHTTPResponseSerializer : NSObject
@end

@interface AFURLSessionManager : NSObject
- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request
                                             progress:(void (^)(NSProgress *downloadProgress))downloadProgressBlock
                                          destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination
                                    completionHandler:(void (^)(NSURLResponse *response, NSURL * filePath, NSError * error))completionHandler;
- (id)initWithSessionConfiguration:(id)arg1;
@end

@interface AFHTTPRequestSerializer : NSObject
+ (id)serializer;
@property(nonatomic) unsigned long long cachePolicy;
@end

@interface AFHTTPSessionManager : NSObject
+ (AFHTTPSessionManager *)manager;
@property(retain, nonatomic) AFHTTPRequestSerializer *requestSerializer;
@property(retain, nonatomic) AFHTTPResponseSerializer *responseSerializer;
@end

@interface MMURLHandler : NSObject
+ (id)defaultHandler;
- (void)startGetA8KeyWithURL:(id)arg1;
- (BOOL)openURLWithDefault:(id)arg1;
+ (BOOL)containsHTTPString:(id)arg1;
- (void)openURLWithDefault:(id)arg1 useA8Key:(BOOL)arg2;
- (BOOL)preHandleUrlStr:(id)arg1 withMessage:(id)arg2;
@end

@interface UserDefaultsService : NSObject
- (void)setString:(id)arg1 forKey:(id)arg2;
- (id)stringForKey:(id)arg1;
@end

@interface MMLinkInfo : NSObject
+ (NSRange)rangeOfUrlInString:(id)arg1 withRange:(NSRange)arg2;
@end

@interface MMCDNDownloadMgr : NSObject
- (BOOL)downloadImageWithMessage:(id)arg1 disableHevc:(BOOL)arg2 downloadType:(unsigned long long)arg3;
@end

@interface MMMessageVideoService : NSObject
- (BOOL)downloadVideoWithMessage:(id)arg1;
@end

@interface MMVoiceMessagePlayer : NSObject
+ (id)defaultPlayer;
- (void)playWithVoiceMessage:(id)arg1 isUnplayedBeforePlay:(BOOL)arg2;
- (void)playVoiceWithMessage:(id)arg1 isUnplayedBeforePlay:(BOOL)arg2;
- (void)stop;
@end

@interface MultiPlatformStatusSyncMgr : NSObject
- (void)markVoiceMessageAsRead:(id)arg1;
@end

@interface EmoticonDownloadMgr : NSObject
- (void)downloadEmoticonWithMessageData:(id)arg1;
@end

@interface PathUtility : NSObject
+ (id)GetCurUserCachePath;
+ (id)emoticonPath:(id)arg1;
+ (id)getMsgVideoPathWithMessage:(id)arg1;
+ (id)getMsgVideoPathWithUserName:(id)arg1 localId:(unsigned int)arg2;
@end

@interface MMExtensionCenter : NSObject
- (id)getExtension:(id)arg1;
@end

@interface MMExtension : NSObject
- (BOOL)registerExtension:(id)arg1;
- (void)unregisterExtension:(id)arg1;
- (id)getExtensionListForSelector:(SEL)arg1;
@end

@interface EmoticonMsgInfo : NSObject
@property(copy, nonatomic) NSString *cdnUrl;
@property(copy, nonatomic) NSString *m_nsMD5;
@end

@protocol EmoticonDownloadMgrExt <NSObject>
@optional
- (void)emoticonDownloadFailed:(EmoticonMsgInfo *)arg1;
- (void)emoticonDownloadFinished:(EmoticonMsgInfo *)arg1;
@end

@protocol IGroupMgrExt <NSObject>

@end

@interface MMChatMangerSearchReportMgr : NSObject
@property(retain, nonatomic) NSMutableArray *brandContactSearchResults;
@property(retain, nonatomic) NSMutableArray *chatLogSearchResults;
@property(retain, nonatomic) NSMutableArray *contactSearchResults;
@property(retain, nonatomic) NSMutableArray *groupContactSearchResults;
@end

@interface MMWebViewHelper : NSObject
+ (BOOL)preHandleWebUrlStr:(id)arg1 withMessage:(id)arg2;
@end

@interface XMLDictionaryParser : NSObject
+ (id)sharedInstance;
- (id)dictionaryWithString:(id)arg1;
@end

@interface MMEmoticonData : NSObject
@property(retain, nonatomic) NSString *md5; // @synthesize md5=_md5;
@end

@interface MMStickerPickerCell : NSView <NSMenuDelegate>
@property(retain, nonatomic) MMEmoticonData *emoticonData; // @synthesize emoticonData=_emoticonData;
@property(nonatomic) __weak NSScrollView *collectionView; 
@end

@interface MMStickerCollectionViewController : NSViewController
@property(nonatomic) __weak id delegate;
@end

@interface MMStickerPicker : NSViewController
- (void)hide;
@end

@interface MMVoiceTranslateMgr : NSObject
- (void)doTranslate:(id)arg1 isAuto:(BOOL)arg2;
- (void)updateTranscribeVoiceMessage:(id)arg1 voiceText:(id)arg2 voiceToTextStatus:(unsigned int)arg3;
@end

@interface MMAppBrandMessageCellView : NSObject
+ (id)makeAppBrandTableItemWithItem:(id)arg1;
@end

@interface MMUnsupportedCellView : NSObject
+ (id)makeUnsupportedTableItemWithItem:(id)arg1;
@end

@interface MMPayTransferCellView : NSObject
+ (id)makePayTransferTableItemWithItem:(id)arg1;
@end




================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/A/Modules/module.modulemap
================================================
framework module WeChatPlugin {
  umbrella header "WeChatPlugin.h"

  export *
  module * { export * }
}


================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/A/Resources/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>BuildMachineOSBuild</key>
	<string>22D68</string>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>WeChatPlugin</string>
	<key>CFBundleIdentifier</key>
	<string>tk.WeChatPlugin</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>WeChatPlugin</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>1.7.5</string>
	<key>CFBundleSupportedPlatforms</key>
	<array>
		<string>MacOSX</string>
	</array>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>DTCompiler</key>
	<string>com.apple.compilers.llvm.clang.1_0</string>
	<key>DTPlatformBuild</key>
	<string>14A400</string>
	<key>DTPlatformName</key>
	<string>macosx</string>
	<key>DTPlatformVersion</key>
	<string>12.3</string>
	<key>DTSDKBuild</key>
	<string>21E226</string>
	<key>DTSDKName</key>
	<string>macosx12.3</string>
	<key>DTXcode</key>
	<string>1401</string>
	<key>DTXcodeBuild</key>
	<string>14A400</string>
	<key>LSMinimumSystemVersion</key>
	<string>10.12</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2017年 tk. All rights reserved.</string>
	<key>showUpdateWindow</key>
	<true/>
	<key>versionInfo</key>
	<string>v1.7.5(2019-01-13):\n👉🏻  适配微信 Version. 2.3.22\n👉🏼  菜单栏新增是否允许微信启动时检测更新(非AppStore版本)\n👉🏽  优化 XML 解析\n\n\n\nv1.7.3 (2018-10-22):\n👉🏻  适配微信 Version. 2.3.19\n👉🏼  修复安全漏洞(请务必更新,若有安装QQ插件也需要更新)\n👉🏽  菜单栏-关于小助手-新增 alfred 开关(若不使用 aflred 可关闭)  \n\nv1.7.1 (2018-07-24):\n👉🏻  适配微信 Version. 2.3.17\n👉🏼  新增 alfred 搜索最近聊天列表\n👉🏽  新增 alfred 查看用户聊天记录\n     (需更新wechat-alfred-workflow)\n\nv1.7 (2018-05-12):\n👉🏻  新增不同账户设置不同的自动回复&amp;远程控制\n👉🏼  自动回复新增总开关&amp;指定联系人\n👉🏽  远程控制新增控制小助手配置\n👉🏾  新增一键已读\n👉  新增一键清除空回话\n👉🏻  新增国际化(支持英、简、繁)\n👉🏼  新增关于小助手\n👉🏽  新增在线更新小助手  \n👉🏾  去除微信url转链处理(从此直接打开抖音链接🌝 \n👉🏿  修复无法免认证登录&amp;多开等bug \n</string>
</dict>
</plist>


================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/A/Resources/TKRemoteControlCommands.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app || open /System/Library/CoreServices/ScreenSaverEngine.app </string>
			<key>keyword</key>
			<string>ScreenSave</string>
			<key>function</key>
			<string>Assistant.Directive.ScreenSave</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>1</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend</string>
			<key>keyword</key>
			<string>LockScreen</string>
			<key>function</key>
			<string>Assistant.Directive.LockScreen</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>1</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>sleep</string>
			<key>keyword</key>
			<string>Sleep</string>
			<key>function</key>
			<string>Assistant.Directive.Sleep</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>shutdown</string>
			<key>keyword</key>
			<string>Shutdown</string>
			<key>function</key>
			<string>Assistant.Directive.Shutdown</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>restart</string>
			<key>keyword</key>
			<string>Restart</string>
			<key>function</key>
			<string>Assistant.Directive.Restart</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>empty</string>
			<key>keyword</key>
			<string>EmptyTrash</string>
			<key>function</key>
			<string>Assistant.Directive.EmptyTrash</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>mute</string>
			<key>keyword</key>
			<string>Mute</string>
			<key>function</key>
			<string>Assistant.Directive.Mute</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
	</array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>killQQ</string>
			<key>keyword</key>
			<string>KillQQ</string>
			<key>function</key>
			<string>Assistant.Directive.KillQQ</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killWeChat</string>
			<key>keyword</key>
			<string>killWeChat</string>
			<key>function</key>
			<string>Assistant.Directive.KillWeChat</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killChrome</string>
			<key>keyword</key>
			<string>KillChrome</string>
			<key>function</key>
			<string>Assistant.Directive.KillChrome</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killSafari</string>
			<key>keyword</key>
			<string>KillSafari</string>
			<key>function</key>
			<string>Assistant.Directive.KillSafari</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killFirefox</string>
			<key>keyword</key>
			<string>killFirefox</string>
			<key>function</key>
			<string>Assistant.Directive.KillFirefox</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killAll</string>
			<key>keyword</key>
			<string>KillAll</string>
			<key>function</key>
			<string>Assistant.Directive.KillAll</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
	</array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>musicToggle</string>
			<key>keyword</key>
			<string>Toggle</string>
			<key>function</key>
			<string>Assistant.Directive.Toggle</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicNext</string>
			<key>keyword</key>
			<string>Next</string>
			<key>function</key>
			<string>Assistant.Directive.Next</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicPrevious</string>
			<key>keyword</key>
			<string>Previous</string>
			<key>function</key>
			<string>Assistant.Directive.Previous</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicVolumeUp</string>
			<key>keyword</key>
			<string>VolumeUp</string>
			<key>function</key>
			<string>Assistant.Directive.VolumeUp</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicVolumeDown</string>
			<key>keyword</key>
			<string>VolumeDown</string>
			<key>function</key>
			<string>Assistant.Directive.VolumeDown</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicLike</string>
			<key>keyword</key>
			<string>LikeChange</string>
			<key>function</key>
			<string>Assistant.Directive.LikeChange</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
	</array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>getDirectiveList</string>
			<key>keyword</key>
			<string>getDirective</string>
			<key>function</key>
			<string>Assistant.Directive.GetList</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>PreventRevokeSwitch</string>
			<key>keyword</key>
			<string>PreventRevokeSwitch</string>
			<key>function</key>
			<string>Assistant.Directive.PreventRevokeSwitch</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>AutoReplySwitch</string>
			<key>keyword</key>
			<string>AutoReplySwitch</string>
			<key>function</key>
			<string>Assistant.Directive.AutoReplySwitch</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>AutoAuthSwitch</string>
			<key>keyword</key>
			<string>AutoAuthSwitch</string>
			<key>function</key>
			<string>Assistant.Directive.AutoAuthSwitch</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
	</array>
</array>
</plist>


================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/A/Resources/en.lproj/about.rtfd/TXT.rtf
================================================
{\rtf1\ansi\ansicpg936\cocoartf1671
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue-Light;\f1\fnil\fcharset0 HelveticaNeue;\f2\fnil\fcharset0 HelveticaNeue-Bold;
\f3\fnil\fcharset134 PingFangSC-Regular;}
{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red32\green124\blue169;}
{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c14510\c56078\c72157;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
\margl1440\margr1440\vieww13760\viewh11300\viewkind0
\hyphauto1\hyphfactor90
\deftab720
\pard\pardeftab720\qc\partightenfactor0

\f0\fs34 \cf2 \expnd0\expndtw0\kerning0
Github: {\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS"}}{\fldrslt \cf3 WeChatPlugin-MacOS}}\
Email: {\field{\*\fldinst{HYPERLINK "mailto:tkk.ioser@gmail.com"}}{\fldrslt \cf3 tkk.ioser@gmail.com}}
\f1 \
\pard\pardeftab720\sl288\slmult1\qc\partightenfactor0

\fs28 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs34 \cf2 Feature
\fs47\fsmilli23660 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl264\slmult1\partightenfactor0
\ls1\ilvl0
\f0\b0\fs30 \cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Message auto reply\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Prevent message recall\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Remote control(support voice control)\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Multiple WeChat\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Auto Auth Login\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Session Sticky Bottom\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Windows Sticky Top\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Session multiple delete\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Auto Login Switch\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Quick reply to notifications\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Copy or Export Sticker\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Update plugin\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Reply or Open session by Alfred
\f3\fs32 \
}

================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/A/Resources/zh-Hans.lproj/about.rtfd/TXT.rtf
================================================
{\rtf1\ansi\ansicpg936\cocoartf1671
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue-Light;\f1\fnil\fcharset0 HelveticaNeue;\f2\fnil\fcharset134 PingFangSC-Semibold;
\f3\fnil\fcharset0 HelveticaNeue-Bold;\f4\fnil\fcharset134 PingFangSC-Regular;\f5\fnil\fcharset0 AppleColorEmoji;
}
{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red32\green124\blue169;\red255\green255\blue255;
\red52\green110\blue183;}
{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c14510\c56078\c72157;\cssrgb\c100000\c100000\c100000;
\cssrgb\c25490\c51373\c76863;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}
{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid201\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid3}
{\list\listtemplateid4\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid301\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid4}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}}
\margl1440\margr1440\vieww13760\viewh11300\viewkind0
\hyphauto1\hyphfactor90
\deftab720
\pard\pardeftab720\qc\partightenfactor0

\f0\fs36\fsmilli18200 \cf2 \expnd0\expndtw0\kerning0
Github: {\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS"}}{\fldrslt \cf3 WeChatPlugin-MacOS}}\
Email: {\field{\*\fldinst{HYPERLINK "mailto:tkk.ioser@gmail.com"}}{\fldrslt \cf3 tkk.ioser@gmail.com}}
\f1\fs32 \
\pard\pardeftab720\sl288\slmult1\qc\partightenfactor0

\fs28 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b9\'a6\'c4\'dc
\f3\fs48 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl216\slmult1\partightenfactor0
\ls1\ilvl0
\f1\b0\fs32 \cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'d7\'d4\'b6\'af\'bb\'d8\'b8\'b4
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'b7\'c0\'b3\'b7\'bb\'d8
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d4\'b6\'b3\'cc\'bf\'d8\'d6\'c6
\f1 (
\f4 \'d2\'d1\'d6\'a7\'b3\'d6\'d3\'ef\'d2\'f4
\f1 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b6\'e0\'bf\'aa
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'b5\'da\'b6\'fe\'b4\'ce\'b5\'c7\'c2\'bc\'c3\'e2\'c8\'cf\'d6\'a4
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'d6\'c3\'b5\'d7\'b9\'a6\'c4\'dc
\f1 (
\f4 \strike \strikec2 \'c0\'e0\'cb\'c6\'d6\'c3\'b6\'a5
\f1 \strike0\striked0 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b4\'b0\'bf\'da\'d6\'c3\'b6\'a5
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'bb\'e1\'bb\'b0\'b6\'e0\'d1\'a1\'c9\'be\'b3\'fd
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d7\'d4\'b6\'af\'b5\'c7\'c2\'bc\'bf\'aa\'b9\'d8
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cd\'a8\'d6\'aa\'d6\'d0\'d0\'c4\'bf\'ec\'bd\'dd\'bb\'d8\'b8\'b4
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da\'b1\'ed\'c7\'e9\'b0\'fc\'b8\'b4\'d6\'c6
\f1  & 
\f4 \'b4\'e6\'b4\'a2
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d0\'a1\'d6\'fa\'ca\'d6\'bc\'ec\'b2\'e2\'b8\'fc\'d0\'c2\'cc\'e1\'d0\'d1
\f1 \
\pard\tx0\tx220\pardeftab720\fi-1\sl216\slmult1\partightenfactor0
\ls1\ilvl0\cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
alfred 
\f4 \'bf\'ec\'bd\'dd\'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
\f1  & 
\f4 \'b4\'f2\'bf\'aa\'b4\'b0\'bf\'da\
\pard\tx0\tx220\pardeftab720\fi-1\sl216\slmult1\partightenfactor0
\ls1\ilvl0
\f1 \cf2 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'bb\'e1\'bb\'b0\'d2\'bb\'bc\'fc\'d2\'d1\'b6\'c1
\f1 \cb1 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0
\ls1\ilvl0\cf2 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d2\'bb\'bc\'fc\'c7\'e5\'b3\'fd\'bf\'d5\'bb\'e1\'bb\'b0
\f1 \cb1 \
\ls1\ilvl0\cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d6\'a7\'b3\'d6\'b9\'fa\'bc\'ca\'bb\'af
\f1  \cb1 \
\ls1\ilvl0\cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d2\'bb\'bc\'fc\'b8\'fc\'d0\'c2
\f1 \cb1 \
\ls1\ilvl0\cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c8\'a5\'b3\'fd\'ce\'a2\'d0\'c5
\f1 url
\f4 \'d7\'aa\'c1\'b4\'a3\'a8\'b4\'d3\'b4\'cb\'d6\'b1\'bd\'d3\'b4\'f2\'bf\'aa\'b6\'b6\'d2\'f4\'c1\'b4\'bd\'d3
\f5 \uc0\u55356 \u57117 \
\ls1\ilvl0
\f1 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
alfred 
\f4 \'cb\'d1\'cb\'f7\'d7\'ee\'bd\'fc\'c1\'c4\'cc\'ec\'a1\'a2\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc
\f5 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0

\f1 \cf2 \kerning1\expnd0\expndtw0 	\'95	
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d2\'c6\'b3\'fd\'bb\'e1\'bb\'b0(\'b2\'bb\'c9\'be\'b3\'fd\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc)\cb1 \

\f1 \cf5 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b8\'fc\'d0\'c2\'c8\'d5\'d6\'be\
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0
\ls2\ilvl0
\f1\b0\fs32 \cf5 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\ul \'ca\'ca\'c5\'e4
\f1 2.3.17 & 
\f4 \'bc\'d3\'c7\'bf
\f1  alfred 
\f4 \'cb\'d1\'cb\'f7
\f1 (2018-07-24)}}
\f2\b\fs36 \cf2 \cb1 \expnd0\expndtw0\kerning0
\
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0
\ls3\ilvl0
\f1\b0\fs32 \cf5 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\ul \'d0\'c2\'d4\'f6\'ba\'c3\'b6\'e0\'b9\'a6\'c4\'dc
\f1 \'85(2018-05-12)}}
\f3\b\fs36 \cf2 \cb1 \expnd0\expndtw0\kerning0
\
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl264\slmult1\partightenfactor0
\ls4\ilvl0
\f1\b0\fs32 \cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d7\'d4\'b6\'af\'bb\'d8\'b8\'b4\'d1\'d3\'b3\'d9
\f1  & 
\f4 \'d0\'de\'b8\'c4\'d6\'c3\'b6\'a5\'b4\'b0\'bf\'da\'bf\'ec\'bd\'dd
\f1 (2018-04-07)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6
\f1  Alfred 
\f4 \'bf\'ec\'bd\'dd\'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
\f1  & 
\f4 \'b4\'f2\'bf\'aa\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da
\f1 (2018-03-18)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d3\'ef\'d2\'f4\'d4\'b6\'b3\'cc\'bf\'d8\'d6\'c6
\f1 mac & 
\f4 \'d3\'c5\'bb\'af\'b3\'b7\'bb\'d8\'cf\'fb\'cf\'a2\'a1\'a2\'bf\'ec\'bd\'dd\'bb\'d8\'b8\'b4
\f1 (2018-03-03)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d0\'a1\'d6\'fa\'ca\'d6\'bc\'ec\'b2\'e2\'b8\'fc\'d0\'c2
\f1 &
\f4 \'b1\'ed\'c7\'e9\'b0\'fc\'b8\'b4\'d6\'c6\'b4\'e6\'b4\'a2\'b5\'c8\'b5\'c8
\f1  (2018-02-24)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.4.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'b4\'b0\'bf\'da\'d6\'c3\'b6\'a5
\f1 &
\f4 \'b6\'e0\'d1\'a1\'c9\'be\'b3\'fd\'b5\'c8\'b5\'c8
\f1  (2017-10-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.3.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d6\'c3\'b5\'d7
\f1 &
\f4 \'c3\'e2\'c8\'cf\'d6\'a4
\f1  (2017-09-17)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.2.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'de\'b8\'b4\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'cf\'fb\'ca\'a7\'b5\'c4
\f1 bug (2017-09-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.1.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d6\'d8\'b9\'b9\'d7\'d4\'b6\'af\'bb\'d8\'b8\'b4\'a3\'ac\'ca\'b5\'cf\'d6\'b6\'e0\'bb\'d8\'b8\'b4
\f1  (2017-08-23)}}\cf2 \expnd0\expndtw0\kerning0
\
\pard\pardeftab720\sl264\slmult1\partightenfactor0

\f2\b \cf2 \'cf\'ea\'cf\'b8\'c4\'da\'c8\'dd\'c7\'eb\'b2\'e9\'bf\'b4{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/blob/master/CHANGELOG.md"}}{\fldrslt 
\f1\b0 \cf5 CHANGELOG}}
\f1\b0 \cf5 \
}

================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/A/Resources/zh-Hant.lproj/about.rtfd/TXT.rtf
================================================
{\rtf1\ansi\ansicpg936\cocoartf1671
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue-Light;\f1\fnil\fcharset0 HelveticaNeue;\f2\fnil\fcharset134 PingFangSC-Semibold;
\f3\fnil\fcharset0 HelveticaNeue-Bold;\f4\fnil\fcharset134 PingFangSC-Light;}
{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red32\green124\blue169;}
{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c14510\c56078\c72157;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}
\margl1440\margr1440\vieww13760\viewh11300\viewkind0
\hyphauto1\hyphfactor90
\deftab720
\pard\pardeftab720\qc\partightenfactor0

\f0\fs36\fsmilli18200 \cf2 \expnd0\expndtw0\kerning0
Github: {\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS"}}{\fldrslt \cf3 WeChatPlugin-MacOS}}\
Email: {\field{\*\fldinst{HYPERLINK "mailto:tkk.ioser@gmail.com"}}{\fldrslt \cf3 tkk.ioser@gmail.com}}
\f1\fs32 \
\pard\pardeftab720\sl288\slmult1\qc\partightenfactor0

\fs28 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b9\'a6\'c4\'dc
\f3\fs47\fsmilli23660 \cf2 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0
\ls1\ilvl0
\f0\b0\fs32 \cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'d7\'d4\'84\'d3\'bb\'d8\'8f\'cd
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'b7\'c0\'b3\'b7\'bb\'d8
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'df\'68\'b3\'cc\'bf\'d8\'d6\'c6
\f0 (
\f4 \'d2\'d1\'d6\'a7\'b3\'d6\'d5\'5a\'d2\'f4
\f0 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b6\'e0\'e9\'5f
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'b5\'da\'b6\'fe\'b4\'ce\'b5\'c7\'e4\'9b\'c3\'e2\'d5\'4a\'d7\'43
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'d6\'c3\'b5\'d7\'b9\'a6\'c4\'dc
\f0 (
\f4 \strike \strikec2 \'ee\'90\'cb\'c6\'d6\'c3\'ed\'94
\f0 \strike0\striked0 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b4\'b0\'bf\'da\'d6\'c3\'ed\'94
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'95\'fe\'d4\'92\'b6\'e0\'df\'78\'84\'68\'b3\'fd
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d7\'d4\'84\'d3\'b5\'c7\'e4\'9b\'e9\'5f\'ea\'50
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cd\'a8\'d6\'aa\'d6\'d0\'d0\'c4\'bf\'ec\'bd\'dd\'bb\'d8\'8f\'cd
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da\'b1\'ed\'c7\'e9\'b0\'fc\'8f\'cd\'d6\'c6
\f0  & 
\f4 \'b4\'e6\'83\'a6
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d0\'a1\'d6\'fa\'ca\'d6\'99\'7a\'9c\'79\'b8\'fc\'d0\'c2\'cc\'e1\'d0\'d1
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
alfred 
\f4 \'bf\'ec\'bd\'dd\'b0\'6c\'cb\'cd\'cf\'fb\'cf\'a2
\f0  & 
\f4 \'b4\'f2\'e9\'5f\'b4\'b0\'bf\'da
\f0  \
\pard\tx566\pardeftab720\partightenfactor0

\fs36\fsmilli18200 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b8\'fc\'d0\'c2\'c8\'d5\'d5\'49
\f3\fs47\fsmilli23660 \cf2 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl264\slmult1\partightenfactor0
\ls2\ilvl0
\f0\b0\fs32 \cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d7\'d4\'84\'d3\'bb\'d8\'8f\'cd\'d1\'d3\'df\'74
\f0  & 
\f4 \'d0\'de\'b8\'c4\'d6\'c3\'ed\'94\'b4\'b0\'bf\'da\'bf\'ec\'bd\'dd
\f0 (2018-04-07)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6
\f0  Alfred 
\f4 \'bf\'ec\'bd\'dd\'b0\'6c\'cb\'cd\'cf\'fb\'cf\'a2
\f0  & 
\f4 \'b4\'f2\'e9\'5f\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da
\f0 (2018-03-18)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d5\'5a\'d2\'f4\'df\'68\'b3\'cc\'bf\'d8\'d6\'c6
\f0 mac & 
\f4 \'83\'9e\'bb\'af\'b3\'b7\'bb\'d8\'cf\'fb\'cf\'a2\'a1\'a2\'bf\'ec\'bd\'dd\'bb\'d8\'8f\'cd
\f0 (2018-03-03)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d0\'a1\'d6\'fa\'ca\'d6\'99\'7a\'9c\'79\'b8\'fc\'d0\'c2
\f0 &
\f4 \'b1\'ed\'c7\'e9\'b0\'fc\'8f\'cd\'d6\'c6\'b4\'e6\'83\'a6\'b5\'c8\'b5\'c8
\f0  (2018-02-24)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.4.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'b4\'b0\'bf\'da\'d6\'c3\'ed\'94
\f0 &
\f4 \'b6\'e0\'df\'78\'84\'68\'b3\'fd\'b5\'c8\'b5\'c8
\f0  (2017-10-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.3.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d6\'c3\'b5\'d7
\f0 &
\f4 \'c3\'e2\'d5\'4a\'d7\'43
\f0  (2017-09-17)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.2.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'de\'8f\'cd\'c1\'c4\'cc\'ec\'d3\'9b\'e4\'9b\'cf\'fb\'ca\'a7\'b5\'c4
\f0 bug (2017-09-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.1.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d6\'d8\'98\'8b\'d7\'d4\'84\'d3\'bb\'d8\'8f\'cd\'a3\'ac\'8c\'8d\'ac\'46\'b6\'e0\'bb\'d8\'8f\'cd
\f0  (2017-08-23)}}\cf2 \expnd0\expndtw0\kerning0
\
\pard\pardeftab720\sl264\slmult1\partightenfactor0

\f2\b \cf2 \'d4\'94\'bc\'9a\'83\'c8\'c8\'dd\'d5\'88\'b2\'e9\'bf\'b4{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/blob/master/CHANGELOG.md"}}{\fldrslt 
\f0\b0 \cf3 CHANGELOG}}
\f0\b0\fs36\fsmilli18200 \cf2 \
}

================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Headers/WeChatPlugin.h
================================================
//
//  WeChatPlugin.h
//  WeChatPlugin
//
//  Created by TK on 2017/4/19.
//  Copyright © 2017年 tk. All rights reserved.
//

#import <Cocoa/Cocoa.h>
#import "TKWeChatPluginConfig.h"
#import "TKHelper.h"

FOUNDATION_EXPORT double WeChatPluginVersionNumber;
FOUNDATION_EXPORT const unsigned char WeChatPluginVersionString[];

@class WCContactData;

#pragma mark - 微信原始的部分类与方法

@interface MMSystemLinkInfo : NSObject
@property(retain, nonatomic) NSMutableAttributedString *msgContent;

@end
@interface MMContactProfileController : NSViewController
@property(copy, nonatomic) NSString *groupName;
@property(nonatomic) struct CGRect relativeToRect;
@property(nonatomic) unsigned long long preferredEdge;
@property(retain, nonatomic) WCContactData *contactData;
- (void)sendGetContactRequest:(id)arg1 withGroupName:(id)arg2;
- (void)showInView:(id)arg1;
@end


@interface MMBrandChatsViewController : NSObject
- (void)startChatWithContact:(id)arg1;
@end

@interface MMLoginOneClickViewController : NSViewController
@property(nonatomic) NSTextField *descriptionLabel;
- (void)onLoginButtonClicked:(id)arg1;
@property(nonatomic) NSButton *loginButton;
@end

@interface AccountService : NSObject
- (id)GetLastLoginUserName;
- (id)GetLastLoginAutoAuthKey;
- (BOOL)canAutoAuth;
- (void)AutoAuth;
- (void)ManualLogin:(id)arg1 withPassword:(id)arg2;
- (void)ManualLogout;
- (void)FFAddSvrMsgImgVCZZ;
- (void)QRCodeLoginWithUserName:(id)arg1 password:(id)arg2;
- (void)onAuthOKOfUser:(id)arg1 withSessionKey:(id)arg2 withServerId:(id)arg3 autoAuthKey:(id)arg4 isAutoAuth:(BOOL)arg5;
@end

@interface MMLoginViewController : NSObject
@property(retain, nonatomic) MMLoginOneClickViewController *oneClickViewController;
@end

@interface MMHandoffButton : NSView
@end

@interface MMMainViewController : NSObject
@property(nonatomic) __weak MMHandoffButton *handoffButton;
@end

@interface MMMainWindowController : NSWindowController
@property(retain, nonatomic) MMLoginViewController *loginViewController;
@property(retain, nonatomic) MMMainViewController *mainViewController;
- (void)onAuthOK;
- (void)onLogOut;
@end

@interface MMVoiceTranscribeCGI : NSObject
- (void)transcribeVoiceMessage:(id)arg1 withCompletion:(void (^)(void))arg2;
@end

@interface FFProcessReqsvrZZ : NSObject
- (void)onRevokeMsg:(id)arg1;
- (void)FFToNameFavChatZZ:(id)arg1;
- (void)FFToNameFavChatZZ:(id)arg1 sessionMsgList:(id)arg2;
- (void)OnSyncBatchAddMsgs:(NSArray *)arg1 isFirstSync:(BOOL)arg2;
- (void)FFImgToOnFavInfoInfoVCZZ:(id)arg1 isFirstSync:(BOOL)arg2;
- (id)FFProcessTReqZZ:(id)arg1 toUsrName:(id)arg2 msgText:(id)arg3 atUserList:(id)arg4;
- (id)GetMsgData:(id)arg1 svrId:(long)arg2;
- (void)AddLocalMsg:(id)arg1 msgData:(id)arg2;
- (void)TranscribeVoiceMessage:(id)arg1 completion:(void (^)(void))arg2;
- (BOOL)ClearUnRead:(id)arg1 FromID:(unsigned int)arg2 ToID:(unsigned int)arg3;
- (BOOL)ClearUnRead:(id)arg1 FromCreateTime:(unsigned int)arg2 ToCreateTime:(unsigned int)arg3;
- (BOOL)HasMsgInChat:(id)arg1;
- (id)GetMsgListWithChatName:(id)arg1 fromCreateTime:(unsigned int)arg2 localId:(NSInteger)arg3 limitCnt:(NSInteger)arg4 hasMore:(char *)arg5 sortAscend:(BOOL)arg6;
- (void)DelMsg:(id)arg1 msgList:(id)arg2 isDelAll:(BOOL)arg3 isManual:(BOOL)arg4;
@end

@interface MMServiceCenter : NSObject
+ (id)defaultCenter;
- (id)getService:(Class)arg1;
@end

@interface SKBuiltinString_t : NSObject
@property(retain, nonatomic, setter=SetString:) NSString *string; // @synthesize string;
@end

@interface AddMsg : NSObject
@property(retain, nonatomic, setter=SetContent:) SKBuiltinString_t *content; // @synthesize content;
@property(retain, nonatomic, setter=SetFromUserName:) SKBuiltinString_t *fromUserName; // @synthesize fromUserName;
@property(nonatomic, setter=SetMsgType:) int msgType; // @synthesize msgType;
@property(retain, nonatomic, setter=SetToUserName:) SKBuiltinString_t *toUserName; // @synthesize toUserName;
@property (nonatomic, assign) unsigned int createTime;
@property(nonatomic, setter=SetNewMsgId:) long long newMsgId;
@end

@interface MMChatMessageViewController : NSViewController
@property(retain, nonatomic) WCContactData *chatContact;
@property(nonatomic) __weak NSTableView *messageTableView;
- (void)scrollToMessage:(NSUInteger)arg1;
- (BOOL)showLocatedMessage:(NSUInteger)arg1;
- (BOOL)showLocatedMessage:(unsigned int)arg1 needHighLighted:(BOOL)arg2;
- (void)onClickSession;
- (void)reloadTableView;
@end

@interface MMChatDetailSplitViewController : NSObject
@property(retain, nonatomic) MMChatMessageViewController *chatMessageViewController;
@end

@interface MMChatsViewController : NSViewController <NSTableViewDataSource, NSTableViewDelegate>
@property(nonatomic) __weak NSTableView *tableView;
@property(retain, nonatomic) MMBrandChatsViewController *brandChatsViewController;
@property(retain, nonatomic) MMChatDetailSplitViewController *chatDetailSplitViewController;
@end

@interface WeChat : NSObject
+ (id)sharedInstance;
@property(nonatomic) MMChatsViewController *chatsViewController;
@property(retain, nonatomic) MMMainWindowController *mainWindowController;
@property(nonatomic) BOOL isAppTerminating;
@property(nonatomic) BOOL hasAuthOK;
- (void)startANewChatWithContact:(id)arg1;
- (void)_clearAllUnreadMessages:(id)arg1;
- (void)onAuthOK:(BOOL)arg1;
- (void)checkForUpdatesInBackground;
- (void)FFAddRecvFavZZ:(BOOL)arg1;
@end

@interface ContactStorage : NSObject
- (id)GetSelfContact;
- (id)GetContact:(id)arg1;
- (id)GetAllBrandContacts;
- (id)GetAllFavContacts;
- (id)GetAllFriendContacts;
@end

@interface GroupStorage : NSObject
{
    NSMutableDictionary *m_dictGroupContacts;
}
- (id)GetAllGroups;
- (id)GetGroupMemberContact:(id)arg1;
- (void)notifyModifyGroupContactsOnMainThread:(id)arg1;
//- (id)GetGroupMemberListWithGroupContact:(id)arg1;
- (id)GetGroupMemberListWithGroupContact:(id)arg1 limit:(unsigned int)arg2 filterSelf:(BOOL)arg3;
@end

@interface ChatRoomData : NSObject
{
    NSMutableDictionary *m_dicData;
}
@end

@interface WCContactData : NSObject
@property(retain, nonatomic) NSString *m_nsUsrName; // @synthesize m_nsUsrName;
@property(nonatomic) unsigned int m_uiFriendScene;  // @synthesize m_uiFriendScene;
@property(retain, nonatomic) NSString *m_nsNickName;    // 用户昵称
@property(retain, nonatomic) NSString *m_nsRemark;      // 备注
@property(retain, nonatomic) NSString *m_nsHeadImgUrl;  // 头像
@property(retain, nonatomic) NSString *m_nsHeadHDImgUrl;
@property(retain, nonatomic) NSString *m_nsHeadHDMd5;
@property(retain, nonatomic) NSString *m_nsAliasName;
@property(retain, nonatomic) NSString *avatarCacheKey;
@property(readonly, nonatomic) unsigned long long groupMemberCount;
@property(retain, nonatomic) ChatRoomData *m_chatRoomData;
@property(nonatomic) BOOL m_isShowRedDot;
- (BOOL)isBrandContact;
- (BOOL)isSelf;
- (id)innerGetGroupDisplayName;
- (NSString *)groupChatDisplayNameInGroup:(id)arg1;
- (id)getContactDisplayUsrName;
- (BOOL)isGroupChat;
- (BOOL)isMMChat;
- (BOOL)isMMContact;
- (BOOL)containsMember:(id)arg1;
- (id)displayRegion;
- (BOOL)isStickyFolder;
@end

@interface WCPayInfoItem : NSObject
@property(retain, nonatomic) NSString *m_nsFeeDesc;
@end

@interface MessageData : NSObject
- (id)initWithMsgType:(long long)arg1;
@property(retain, nonatomic) NSString *fromUsrName;
@property(retain, nonatomic) NSString *toUsrName;
@property(retain, nonatomic) NSString *msgContent;
@property(retain, nonatomic) NSString *msgPushContent;
@property(retain, nonatomic) NSString *realChatUserName;
@property(retain, nonatomic) WCPayInfoItem *m_oWCPayInfoItem; // @dynamic m_oWCPayInfoItem;
@property(retain, nonatomic) NSString *m_nsAppName;
@property(retain, nonatomic) NSString *m_nsSourceDisplayname;
@property(nonatomic) int messageType;
@property(nonatomic) int msgStatus;
@property(nonatomic) int msgCreateTime;
@property(nonatomic) int mesLocalID;
@property(nonatomic) long long mesSvrID;
@property(retain, nonatomic) NSString *msgVoiceText;
@property(copy, nonatomic) NSString *m_nsEmoticonMD5;
- (BOOL)isChatRoomMessage;
- (NSString *)groupChatSenderDisplayName;
- (id)getRealMessageContent;
- (id)getChatRoomUsrName;
- (BOOL)isSendFromSelf;
- (BOOL)isCustomEmojiMsg;
- (BOOL)isImgMsg;
- (BOOL)isVideoMsg;
- (BOOL)isVoiceMsg;
- (BOOL)canForward;
- (BOOL)IsPlayingSound;
- (id)summaryString:(BOOL)arg1;
- (BOOL)isEmojiAppMsg;
- (BOOL)isAppBrandMsg;
- (BOOL)IsUnPlayed;
- (void)SetPlayed;
@property(retain, nonatomic) NSString *m_nsTitle;
- (id)originalImageFilePath;
@property(retain, nonatomic) NSString *m_nsVideoPath;
@property(retain, nonatomic) NSString *m_nsFilePath;
@property(retain, nonatomic) NSString *m_nsAppMediaUrl;
@property(nonatomic) MessageData *m_refMessageData;
@property(nonatomic) unsigned int m_uiDownloadStatus;
- (void)SetPlayingSoundStatus:(BOOL)arg1;
@end

@interface CUtility : NSObject
+ (BOOL)HasWechatInstance;
+ (BOOL)FFSvrChatInfoMsgWithImgZZ;
+ (unsigned long long)getFreeDiskSpace;
+ (void)ReloadSessionForMsgSync;
+ (id)GetCurrentUserName;
+ (id)GetContactByUsrName:(id)arg1;
+ (BOOL)IsStickyChatsFolder:(id)arg1;
@end

@interface MMSessionInfoPackedInfo: NSObject
@property(retain, nonatomic) WCContactData *m_contact;
@property(retain, nonatomic) MessageData *m_msgData;
@end

@interface MMSessionInfo : NSObject
@property(nonatomic) BOOL m_bIsTop; // @synthesize m_bIsTop;
@property(nonatomic) BOOL m_bShowUnReadAsRedDot;
@property(nonatomic) BOOL m_isMentionedUnread; // @synthesize
@property BOOL isInGroupBox; 
@property(retain, nonatomic) NSString *m_nsUserName; // @synthesize m_nsUserName;
@property(retain, nonatomic) MMSessionInfoPackedInfo *m_packedInfo;
@property(nonatomic) unsigned int m_uUnReadCount; 
@end

@protocol MMChatsTableCellViewDelegate <NSObject>
@optional
- (void)cellViewReloadData:(MMSessionInfo *)arg1;
@end

@interface MMChatsTableCellView : NSTableCellView
@property(nonatomic) __weak id <MMChatsTableCellViewDelegate> delegate;
@property(retain, nonatomic) MMSessionInfo *sessionInfo;
- (void)menuWillOpen:(id)arg1;
- (void)contextMenuSticky:(id)arg1;
- (void)contextMenuDelete:(id)arg1;
- (void)tableView:(NSTableView *)arg1 rowGotMouseDown:(long long)arg2;
@end

@interface MMSessionMgr : NSObject
//@property(retain, nonatomic) NSMutableArray *m_arrSession;
- (id)getSessionAtIndex:(unsigned long long)arg1;
- (id)sessionInfoByUserName:(id)arg1;
- (void)muteSessionByUserName:(id)arg1;
- (void)onUnReadCountChange:(id)arg1;
//- (void)TopSessionByUserName:(id)arg1;
- (void)unmuteSessionByUserName:(id)arg1;
- (void)untopSessionByUserName:(id)arg1;
- (void)changeSessionUnreadCountWithUserName:(id)arg1 to:(unsigned int)arg2;
- (void)removeSessionOfUser:(id)arg1 isDelMsg:(BOOL)arg2;
- (void)sortSessions;
- (void)FFDataSvrMgrSvrFavZZ;
- (id)getContact:(id)arg1;
- (id)getSessionContact:(id)arg1;
- (void)onModifyContacts:(id)arg1;
- (NSMutableArray *)getAllSessions;
@end

@interface LogoutCGI : NSTableCellView
- (void)sendLogoutCGIWithCompletion:(id)arg1;
- (void)FFVCRecvDataAddDataToMsgChatMgrRecvZZ:(id)arg1;
@end

@interface MMNotificationService : NSObject
- (id)getNotificationContentWithMsgData:(id)arg1;
- (void)userNotificationCenter:(id)arg1 didActivateNotification:(id)arg2;
@end

@interface MMMessageTableItem : NSObject
@property(retain, nonatomic) MessageData *message;
@end

@interface MMStickerMessageCellView : NSObject
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
@property(nonatomic) MMChatMessageViewController *delegate;
- (BOOL)allowCopy;
- (void)contextMenuCopy;
- (id)contextMenu;
@end

@interface MMImageMessageCellView: NSObject
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
@end

@interface MMSystemMessageCellView: NSObject
@property(nonatomic) id delegate; 
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
@property(retain, nonatomic) NSTextView *msgTextView;
- (void)populateWithMessage:(id)arg1;
@end
@interface EmoticonMgr : NSObject
@property(retain, nonatomic) MessageData *message;
- (id)getEmotionDataWithMD5:(id)arg1;
- (id)getEmotionImgWithMD5:(id)arg1;
- (void)addFavEmoticon:(id)arg1;
- (void)addEmoticonToUploadQueueWithMD5:(id)arg1;
- (void)setAppStickerToastViewDelegate:(id)arg1;
@end

@interface MMComplexContactSearchTaskMgr : NSObject
+ (id)sharedInstance;
- (void)doComplexContactSearch:(id)arg1 searchScene:(unsigned long long)arg2 complete:(void (^)(NSString *,NSArray *, NSArray *, NSArray *,id))arg3 cancelable:(BOOL)arg4;
@end

@interface MMBasicSearchResult : NSObject
@end

@interface MMSearchResultItem : NSObject
@property(retain, nonatomic) MMBasicSearchResult *result;
@end

@interface MMSearchResultContainer : NSObject
@property(nonatomic) unsigned long long logicSearchResultFlag; // @synthesize
@end

@interface MMContactSearchLogic : NSObject
{
    unsigned long long _logicSearchResultFlag;      // 2.3.19 失效
}
@property(retain, nonatomic) NSMutableArray *contactResults;
- (void)doSearchWithKeyword:(id)arg1 searchScene:(unsigned long long)arg2 resultIsShownBlock:(id)arg3 completion:(id)arg4;
@property(retain, nonatomic) NSMutableArray *groupResults;
@property(nonatomic) BOOL isBrandContactSearched;
@property(nonatomic) BOOL isChatLogSearched;
@property(nonatomic) BOOL isContactSearched;
@property(nonatomic) BOOL isGroupContactSearched;
@property(retain, nonatomic) NSMutableArray *oaResults;
- (void)clearAllResults;    //  2.3.19 失效
- (void)clearDataWhenSearchEnd;
- (void)reloadSearchResultDataWithKeyword:(id)arg1 completionBlock:(id)arg2;    //  2.3.17
- (void)reloadSearchResultDataWithCompletionBlock:(id)arg1;                     //  2.3.13
- (void)reloadSearchResultDataWithKeyword:(id)arg1 resultContainer:(id)arg2 completionBlock:(id)arg3;
@property(retain, nonatomic) MMSearchResultContainer *searchResultContainer;
@end

@interface MMComplexContactSearchResult : MMBasicSearchResult
@property(retain, nonatomic) NSString *fieldValue;
@property(retain, nonatomic) WCContactData *contact;
@property(nonatomic) unsigned long long fieldType;  // 1:备注 3:昵称 4:微信号  8:省份  7:市  9:国家
@end

@interface MMComplexGroupContactMembersSearchResult : MMBasicSearchResult
@property(retain, nonatomic) NSMutableArray<MMComplexContactSearchResult *> *membersSearchReults;
@end

@interface MMComplexGroupContactSearchResult : MMBasicSearchResult
@property(nonatomic) unsigned long long searchType;     // 1 名称 2 群成员名称
@property(retain) WCContactData *groupContact;
@property(retain, nonatomic) MMComplexGroupContactMembersSearchResult *groupMembersResult;
@end

@interface MMAvatarService : NSObject
- (NSString *)avatarCachePath;
- (id)_getImageFromCacheWithMD5Key:(id)arg1;
- (void)avatarImageWithContact:(id)arg1 completion:(void (^)(NSImage *image))arg2;
- (void)getAvatarImageWithContact:(id)arg1 completion:(void (^)(NSImage *image))arg2;
@end

@interface NSString (MD5)
- (id)md5String;
@end

@interface MMSessionPickerLogic : NSObject
@property(nonatomic) NSArray *selectedUserNames;
@end


@interface MMSessionListView : NSObject
{
    MMSessionPickerLogic *m_logic;
}
@end

@interface MMSessionPickerWindow : NSWindowController
+ (id)shareInstance;
- (void)beginSheetForWindow:(id)arg1 completionHandler:(void(^)(id a1))arg2;
@property(retain, nonatomic) id choosenViewController; // @synthesize
@property(retain, nonatomic) id listViewController; // @synthesize
- (void)setShowsGroupChats:(BOOL)arg1;
- (void)setShowsOfficialAccounts:(BOOL)arg1;
- (void)setShowsOtherNonhumanChats:(BOOL)arg1;
- (void)setType:(unsigned long long)arg1;

@end

@interface AFHTTPResponseSerializer : NSObject
@end

@interface AFURLSessionManager : NSObject
- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request
                                             progress:(void (^)(NSProgress *downloadProgress))downloadProgressBlock
                                          destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination
                                    completionHandler:(void (^)(NSURLResponse *response, NSURL * filePath, NSError * error))completionHandler;
- (id)initWithSessionConfiguration:(id)arg1;
@end

@interface AFHTTPRequestSerializer : NSObject
+ (id)serializer;
@property(nonatomic) unsigned long long cachePolicy;
@end

@interface AFHTTPSessionManager : NSObject
+ (AFHTTPSessionManager *)manager;
@property(retain, nonatomic) AFHTTPRequestSerializer *requestSerializer;
@property(retain, nonatomic) AFHTTPResponseSerializer *responseSerializer;
@end

@interface MMURLHandler : NSObject
+ (id)defaultHandler;
- (void)startGetA8KeyWithURL:(id)arg1;
- (BOOL)openURLWithDefault:(id)arg1;
+ (BOOL)containsHTTPString:(id)arg1;
- (void)openURLWithDefault:(id)arg1 useA8Key:(BOOL)arg2;
- (BOOL)preHandleUrlStr:(id)arg1 withMessage:(id)arg2;
@end

@interface UserDefaultsService : NSObject
- (void)setString:(id)arg1 forKey:(id)arg2;
- (id)stringForKey:(id)arg1;
@end

@interface MMLinkInfo : NSObject
+ (NSRange)rangeOfUrlInString:(id)arg1 withRange:(NSRange)arg2;
@end

@interface MMCDNDownloadMgr : NSObject
- (BOOL)downloadImageWithMessage:(id)arg1 disableHevc:(BOOL)arg2 downloadType:(unsigned long long)arg3;
@end

@interface MMMessageVideoService : NSObject
- (BOOL)downloadVideoWithMessage:(id)arg1;
@end

@interface MMVoiceMessagePlayer : NSObject
+ (id)defaultPlayer;
- (void)playWithVoiceMessage:(id)arg1 isUnplayedBeforePlay:(BOOL)arg2;
- (void)playVoiceWithMessage:(id)arg1 isUnplayedBeforePlay:(BOOL)arg2;
- (void)stop;
@end

@interface MultiPlatformStatusSyncMgr : NSObject
- (void)markVoiceMessageAsRead:(id)arg1;
@end

@interface EmoticonDownloadMgr : NSObject
- (void)downloadEmoticonWithMessageData:(id)arg1;
@end

@interface PathUtility : NSObject
+ (id)GetCurUserCachePath;
+ (id)emoticonPath:(id)arg1;
+ (id)getMsgVideoPathWithMessage:(id)arg1;
+ (id)getMsgVideoPathWithUserName:(id)arg1 localId:(unsigned int)arg2;
@end

@interface MMExtensionCenter : NSObject
- (id)getExtension:(id)arg1;
@end

@interface MMExtension : NSObject
- (BOOL)registerExtension:(id)arg1;
- (void)unregisterExtension:(id)arg1;
- (id)getExtensionListForSelector:(SEL)arg1;
@end

@interface EmoticonMsgInfo : NSObject
@property(copy, nonatomic) NSString *cdnUrl;
@property(copy, nonatomic) NSString *m_nsMD5;
@end

@protocol EmoticonDownloadMgrExt <NSObject>
@optional
- (void)emoticonDownloadFailed:(EmoticonMsgInfo *)arg1;
- (void)emoticonDownloadFinished:(EmoticonMsgInfo *)arg1;
@end

@protocol IGroupMgrExt <NSObject>

@end

@interface MMChatMangerSearchReportMgr : NSObject
@property(retain, nonatomic) NSMutableArray *brandContactSearchResults;
@property(retain, nonatomic) NSMutableArray *chatLogSearchResults;
@property(retain, nonatomic) NSMutableArray *contactSearchResults;
@property(retain, nonatomic) NSMutableArray *groupContactSearchResults;
@end

@interface MMWebViewHelper : NSObject
+ (BOOL)preHandleWebUrlStr:(id)arg1 withMessage:(id)arg2;
@end

@interface XMLDictionaryParser : NSObject
+ (id)sharedInstance;
- (id)dictionaryWithString:(id)arg1;
@end

@interface MMEmoticonData : NSObject
@property(retain, nonatomic) NSString *md5; // @synthesize md5=_md5;
@end

@interface MMStickerPickerCell : NSView <NSMenuDelegate>
@property(retain, nonatomic) MMEmoticonData *emoticonData; // @synthesize emoticonData=_emoticonData;
@property(nonatomic) __weak NSScrollView *collectionView; 
@end

@interface MMStickerCollectionViewController : NSViewController
@property(nonatomic) __weak id delegate;
@end

@interface MMStickerPicker : NSViewController
- (void)hide;
@end

@interface MMVoiceTranslateMgr : NSObject
- (void)doTranslate:(id)arg1 isAuto:(BOOL)arg2;
- (void)updateTranscribeVoiceMessage:(id)arg1 voiceText:(id)arg2 voiceToTextStatus:(unsigned int)arg3;
@end

@interface MMAppBrandMessageCellView : NSObject
+ (id)makeAppBrandTableItemWithItem:(id)arg1;
@end

@interface MMUnsupportedCellView : NSObject
+ (id)makeUnsupportedTableItemWithItem:(id)arg1;
@end

@interface MMPayTransferCellView : NSObject
+ (id)makePayTransferTableItemWithItem:(id)arg1;
@end




================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Modules/module.modulemap
================================================
framework module WeChatPlugin {
  umbrella header "WeChatPlugin.h"

  export *
  module * { export * }
}


================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Resources/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>BuildMachineOSBuild</key>
	<string>22D68</string>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>WeChatPlugin</string>
	<key>CFBundleIdentifier</key>
	<string>tk.WeChatPlugin</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>WeChatPlugin</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>1.7.5</string>
	<key>CFBundleSupportedPlatforms</key>
	<array>
		<string>MacOSX</string>
	</array>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>DTCompiler</key>
	<string>com.apple.compilers.llvm.clang.1_0</string>
	<key>DTPlatformBuild</key>
	<string>14A400</string>
	<key>DTPlatformName</key>
	<string>macosx</string>
	<key>DTPlatformVersion</key>
	<string>12.3</string>
	<key>DTSDKBuild</key>
	<string>21E226</string>
	<key>DTSDKName</key>
	<string>macosx12.3</string>
	<key>DTXcode</key>
	<string>1401</string>
	<key>DTXcodeBuild</key>
	<string>14A400</string>
	<key>LSMinimumSystemVersion</key>
	<string>10.12</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2017年 tk. All rights reserved.</string>
	<key>showUpdateWindow</key>
	<true/>
	<key>versionInfo</key>
	<string>v1.7.5(2019-01-13):\n👉🏻  适配微信 Version. 2.3.22\n👉🏼  菜单栏新增是否允许微信启动时检测更新(非AppStore版本)\n👉🏽  优化 XML 解析\n\n\n\nv1.7.3 (2018-10-22):\n👉🏻  适配微信 Version. 2.3.19\n👉🏼  修复安全漏洞(请务必更新,若有安装QQ插件也需要更新)\n👉🏽  菜单栏-关于小助手-新增 alfred 开关(若不使用 aflred 可关闭)  \n\nv1.7.1 (2018-07-24):\n👉🏻  适配微信 Version. 2.3.17\n👉🏼  新增 alfred 搜索最近聊天列表\n👉🏽  新增 alfred 查看用户聊天记录\n     (需更新wechat-alfred-workflow)\n\nv1.7 (2018-05-12):\n👉🏻  新增不同账户设置不同的自动回复&amp;远程控制\n👉🏼  自动回复新增总开关&amp;指定联系人\n👉🏽  远程控制新增控制小助手配置\n👉🏾  新增一键已读\n👉  新增一键清除空回话\n👉🏻  新增国际化(支持英、简、繁)\n👉🏼  新增关于小助手\n👉🏽  新增在线更新小助手  \n👉🏾  去除微信url转链处理(从此直接打开抖音链接🌝 \n👉🏿  修复无法免认证登录&amp;多开等bug \n</string>
</dict>
</plist>


================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Resources/TKRemoteControlCommands.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app || open /System/Library/CoreServices/ScreenSaverEngine.app </string>
			<key>keyword</key>
			<string>ScreenSave</string>
			<key>function</key>
			<string>Assistant.Directive.ScreenSave</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>1</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend</string>
			<key>keyword</key>
			<string>LockScreen</string>
			<key>function</key>
			<string>Assistant.Directive.LockScreen</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>1</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>sleep</string>
			<key>keyword</key>
			<string>Sleep</string>
			<key>function</key>
			<string>Assistant.Directive.Sleep</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>shutdown</string>
			<key>keyword</key>
			<string>Shutdown</string>
			<key>function</key>
			<string>Assistant.Directive.Shutdown</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>restart</string>
			<key>keyword</key>
			<string>Restart</string>
			<key>function</key>
			<string>Assistant.Directive.Restart</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>empty</string>
			<key>keyword</key>
			<string>EmptyTrash</string>
			<key>function</key>
			<string>Assistant.Directive.EmptyTrash</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>mute</string>
			<key>keyword</key>
			<string>Mute</string>
			<key>function</key>
			<string>Assistant.Directive.Mute</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
	</array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>killQQ</string>
			<key>keyword</key>
			<string>KillQQ</string>
			<key>function</key>
			<string>Assistant.Directive.KillQQ</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killWeChat</string>
			<key>keyword</key>
			<string>killWeChat</string>
			<key>function</key>
			<string>Assistant.Directive.KillWeChat</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killChrome</string>
			<key>keyword</key>
			<string>KillChrome</string>
			<key>function</key>
			<string>Assistant.Directive.KillChrome</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killSafari</string>
			<key>keyword</key>
			<string>KillSafari</string>
			<key>function</key>
			<string>Assistant.Directive.KillSafari</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killFirefox</string>
			<key>keyword</key>
			<string>killFirefox</string>
			<key>function</key>
			<string>Assistant.Directive.KillFirefox</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>killAll</string>
			<key>keyword</key>
			<string>KillAll</string>
			<key>function</key>
			<string>Assistant.Directive.KillAll</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
	</array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>musicToggle</string>
			<key>keyword</key>
			<string>Toggle</string>
			<key>function</key>
			<string>Assistant.Directive.Toggle</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicNext</string>
			<key>keyword</key>
			<string>Next</string>
			<key>function</key>
			<string>Assistant.Directive.Next</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicPrevious</string>
			<key>keyword</key>
			<string>Previous</string>
			<key>function</key>
			<string>Assistant.Directive.Previous</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicVolumeUp</string>
			<key>keyword</key>
			<string>VolumeUp</string>
			<key>function</key>
			<string>Assistant.Directive.VolumeUp</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicVolumeDown</string>
			<key>keyword</key>
			<string>VolumeDown</string>
			<key>function</key>
			<string>Assistant.Directive.VolumeDown</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>musicLike</string>
			<key>keyword</key>
			<string>LikeChange</string>
			<key>function</key>
			<string>Assistant.Directive.LikeChange</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>2</integer>
		</dict>
	</array>
	<array>
		<dict>
			<key>executeCommand</key>
			<string>getDirectiveList</string>
			<key>keyword</key>
			<string>getDirective</string>
			<key>function</key>
			<string>Assistant.Directive.GetList</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>PreventRevokeSwitch</string>
			<key>keyword</key>
			<string>PreventRevokeSwitch</string>
			<key>function</key>
			<string>Assistant.Directive.PreventRevokeSwitch</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>AutoReplySwitch</string>
			<key>keyword</key>
			<string>AutoReplySwitch</string>
			<key>function</key>
			<string>Assistant.Directive.AutoReplySwitch</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
		<dict>
			<key>executeCommand</key>
			<string>AutoAuthSwitch</string>
			<key>keyword</key>
			<string>AutoAuthSwitch</string>
			<key>function</key>
			<string>Assistant.Directive.AutoAuthSwitch</string>
			<key>enable</key>
			<true/>
			<key>type</key>
			<integer>3</integer>
		</dict>
	</array>
</array>
</plist>


================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Resources/en.lproj/about.rtfd/TXT.rtf
================================================
{\rtf1\ansi\ansicpg936\cocoartf1671
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue-Light;\f1\fnil\fcharset0 HelveticaNeue;\f2\fnil\fcharset0 HelveticaNeue-Bold;
\f3\fnil\fcharset134 PingFangSC-Regular;}
{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red32\green124\blue169;}
{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c14510\c56078\c72157;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
\margl1440\margr1440\vieww13760\viewh11300\viewkind0
\hyphauto1\hyphfactor90
\deftab720
\pard\pardeftab720\qc\partightenfactor0

\f0\fs34 \cf2 \expnd0\expndtw0\kerning0
Github: {\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS"}}{\fldrslt \cf3 WeChatPlugin-MacOS}}\
Email: {\field{\*\fldinst{HYPERLINK "mailto:tkk.ioser@gmail.com"}}{\fldrslt \cf3 tkk.ioser@gmail.com}}
\f1 \
\pard\pardeftab720\sl288\slmult1\qc\partightenfactor0

\fs28 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs34 \cf2 Feature
\fs47\fsmilli23660 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl264\slmult1\partightenfactor0
\ls1\ilvl0
\f0\b0\fs30 \cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Message auto reply\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Prevent message recall\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Remote control(support voice control)\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Multiple WeChat\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Auto Auth Login\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Session Sticky Bottom\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Windows Sticky Top\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Session multiple delete\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Auto Login Switch\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Quick reply to notifications\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Copy or Export Sticker\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Update plugin\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
Reply or Open session by Alfred
\f3\fs32 \
}

================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Resources/zh-Hans.lproj/about.rtfd/TXT.rtf
================================================
{\rtf1\ansi\ansicpg936\cocoartf1671
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue-Light;\f1\fnil\fcharset0 HelveticaNeue;\f2\fnil\fcharset134 PingFangSC-Semibold;
\f3\fnil\fcharset0 HelveticaNeue-Bold;\f4\fnil\fcharset134 PingFangSC-Regular;\f5\fnil\fcharset0 AppleColorEmoji;
}
{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red32\green124\blue169;\red255\green255\blue255;
\red52\green110\blue183;}
{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c14510\c56078\c72157;\cssrgb\c100000\c100000\c100000;
\cssrgb\c25490\c51373\c76863;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}
{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid201\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid3}
{\list\listtemplateid4\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid301\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid4}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}}
\margl1440\margr1440\vieww13760\viewh11300\viewkind0
\hyphauto1\hyphfactor90
\deftab720
\pard\pardeftab720\qc\partightenfactor0

\f0\fs36\fsmilli18200 \cf2 \expnd0\expndtw0\kerning0
Github: {\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS"}}{\fldrslt \cf3 WeChatPlugin-MacOS}}\
Email: {\field{\*\fldinst{HYPERLINK "mailto:tkk.ioser@gmail.com"}}{\fldrslt \cf3 tkk.ioser@gmail.com}}
\f1\fs32 \
\pard\pardeftab720\sl288\slmult1\qc\partightenfactor0

\fs28 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b9\'a6\'c4\'dc
\f3\fs48 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl216\slmult1\partightenfactor0
\ls1\ilvl0
\f1\b0\fs32 \cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'d7\'d4\'b6\'af\'bb\'d8\'b8\'b4
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'b7\'c0\'b3\'b7\'bb\'d8
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d4\'b6\'b3\'cc\'bf\'d8\'d6\'c6
\f1 (
\f4 \'d2\'d1\'d6\'a7\'b3\'d6\'d3\'ef\'d2\'f4
\f1 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b6\'e0\'bf\'aa
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'b5\'da\'b6\'fe\'b4\'ce\'b5\'c7\'c2\'bc\'c3\'e2\'c8\'cf\'d6\'a4
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'d6\'c3\'b5\'d7\'b9\'a6\'c4\'dc
\f1 (
\f4 \strike \strikec2 \'c0\'e0\'cb\'c6\'d6\'c3\'b6\'a5
\f1 \strike0\striked0 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b4\'b0\'bf\'da\'d6\'c3\'b6\'a5
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'bb\'e1\'bb\'b0\'b6\'e0\'d1\'a1\'c9\'be\'b3\'fd
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d7\'d4\'b6\'af\'b5\'c7\'c2\'bc\'bf\'aa\'b9\'d8
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cd\'a8\'d6\'aa\'d6\'d0\'d0\'c4\'bf\'ec\'bd\'dd\'bb\'d8\'b8\'b4
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da\'b1\'ed\'c7\'e9\'b0\'fc\'b8\'b4\'d6\'c6
\f1  & 
\f4 \'b4\'e6\'b4\'a2
\f1 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d0\'a1\'d6\'fa\'ca\'d6\'bc\'ec\'b2\'e2\'b8\'fc\'d0\'c2\'cc\'e1\'d0\'d1
\f1 \
\pard\tx0\tx220\pardeftab720\fi-1\sl216\slmult1\partightenfactor0
\ls1\ilvl0\cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
alfred 
\f4 \'bf\'ec\'bd\'dd\'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
\f1  & 
\f4 \'b4\'f2\'bf\'aa\'b4\'b0\'bf\'da\
\pard\tx0\tx220\pardeftab720\fi-1\sl216\slmult1\partightenfactor0
\ls1\ilvl0
\f1 \cf2 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'bb\'e1\'bb\'b0\'d2\'bb\'bc\'fc\'d2\'d1\'b6\'c1
\f1 \cb1 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0
\ls1\ilvl0\cf2 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d2\'bb\'bc\'fc\'c7\'e5\'b3\'fd\'bf\'d5\'bb\'e1\'bb\'b0
\f1 \cb1 \
\ls1\ilvl0\cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d6\'a7\'b3\'d6\'b9\'fa\'bc\'ca\'bb\'af
\f1  \cb1 \
\ls1\ilvl0\cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d2\'bb\'bc\'fc\'b8\'fc\'d0\'c2
\f1 \cb1 \
\ls1\ilvl0\cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c8\'a5\'b3\'fd\'ce\'a2\'d0\'c5
\f1 url
\f4 \'d7\'aa\'c1\'b4\'a3\'a8\'b4\'d3\'b4\'cb\'d6\'b1\'bd\'d3\'b4\'f2\'bf\'aa\'b6\'b6\'d2\'f4\'c1\'b4\'bd\'d3
\f5 \uc0\u55356 \u57117 \
\ls1\ilvl0
\f1 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
alfred 
\f4 \'cb\'d1\'cb\'f7\'d7\'ee\'bd\'fc\'c1\'c4\'cc\'ec\'a1\'a2\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc
\f5 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0

\f1 \cf2 \kerning1\expnd0\expndtw0 	\'95	
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d2\'c6\'b3\'fd\'bb\'e1\'bb\'b0(\'b2\'bb\'c9\'be\'b3\'fd\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc)\cb1 \

\f1 \cf5 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b8\'fc\'d0\'c2\'c8\'d5\'d6\'be\
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0
\ls2\ilvl0
\f1\b0\fs32 \cf5 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\ul \'ca\'ca\'c5\'e4
\f1 2.3.17 & 
\f4 \'bc\'d3\'c7\'bf
\f1  alfred 
\f4 \'cb\'d1\'cb\'f7
\f1 (2018-07-24)}}
\f2\b\fs36 \cf2 \cb1 \expnd0\expndtw0\kerning0
\
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl360\partightenfactor0
\ls3\ilvl0
\f1\b0\fs32 \cf5 \cb4 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\ul \'d0\'c2\'d4\'f6\'ba\'c3\'b6\'e0\'b9\'a6\'c4\'dc
\f1 \'85(2018-05-12)}}
\f3\b\fs36 \cf2 \cb1 \expnd0\expndtw0\kerning0
\
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl264\slmult1\partightenfactor0
\ls4\ilvl0
\f1\b0\fs32 \cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d7\'d4\'b6\'af\'bb\'d8\'b8\'b4\'d1\'d3\'b3\'d9
\f1  & 
\f4 \'d0\'de\'b8\'c4\'d6\'c3\'b6\'a5\'b4\'b0\'bf\'da\'bf\'ec\'bd\'dd
\f1 (2018-04-07)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6
\f1  Alfred 
\f4 \'bf\'ec\'bd\'dd\'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
\f1  & 
\f4 \'b4\'f2\'bf\'aa\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da
\f1 (2018-03-18)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d3\'ef\'d2\'f4\'d4\'b6\'b3\'cc\'bf\'d8\'d6\'c6
\f1 mac & 
\f4 \'d3\'c5\'bb\'af\'b3\'b7\'bb\'d8\'cf\'fb\'cf\'a2\'a1\'a2\'bf\'ec\'bd\'dd\'bb\'d8\'b8\'b4
\f1 (2018-03-03)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d0\'a1\'d6\'fa\'ca\'d6\'bc\'ec\'b2\'e2\'b8\'fc\'d0\'c2
\f1 &
\f4 \'b1\'ed\'c7\'e9\'b0\'fc\'b8\'b4\'d6\'c6\'b4\'e6\'b4\'a2\'b5\'c8\'b5\'c8
\f1  (2018-02-24)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.4.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'b4\'b0\'bf\'da\'d6\'c3\'b6\'a5
\f1 &
\f4 \'b6\'e0\'d1\'a1\'c9\'be\'b3\'fd\'b5\'c8\'b5\'c8
\f1  (2017-10-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.3.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d6\'c3\'b5\'d7
\f1 &
\f4 \'c3\'e2\'c8\'cf\'d6\'a4
\f1  (2017-09-17)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.2.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'de\'b8\'b4\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'cf\'fb\'ca\'a7\'b5\'c4
\f1 bug (2017-09-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls4\ilvl0\cf5 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.1.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d6\'d8\'b9\'b9\'d7\'d4\'b6\'af\'bb\'d8\'b8\'b4\'a3\'ac\'ca\'b5\'cf\'d6\'b6\'e0\'bb\'d8\'b8\'b4
\f1  (2017-08-23)}}\cf2 \expnd0\expndtw0\kerning0
\
\pard\pardeftab720\sl264\slmult1\partightenfactor0

\f2\b \cf2 \'cf\'ea\'cf\'b8\'c4\'da\'c8\'dd\'c7\'eb\'b2\'e9\'bf\'b4{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/blob/master/CHANGELOG.md"}}{\fldrslt 
\f1\b0 \cf5 CHANGELOG}}
\f1\b0 \cf5 \
}

================================================
FILE: Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Resources/zh-Hant.lproj/about.rtfd/TXT.rtf
================================================
{\rtf1\ansi\ansicpg936\cocoartf1671
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue-Light;\f1\fnil\fcharset0 HelveticaNeue;\f2\fnil\fcharset134 PingFangSC-Semibold;
\f3\fnil\fcharset0 HelveticaNeue-Bold;\f4\fnil\fcharset134 PingFangSC-Light;}
{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red32\green124\blue169;}
{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c14510\c56078\c72157;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}
\margl1440\margr1440\vieww13760\viewh11300\viewkind0
\hyphauto1\hyphfactor90
\deftab720
\pard\pardeftab720\qc\partightenfactor0

\f0\fs36\fsmilli18200 \cf2 \expnd0\expndtw0\kerning0
Github: {\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS"}}{\fldrslt \cf3 WeChatPlugin-MacOS}}\
Email: {\field{\*\fldinst{HYPERLINK "mailto:tkk.ioser@gmail.com"}}{\fldrslt \cf3 tkk.ioser@gmail.com}}
\f1\fs32 \
\pard\pardeftab720\sl288\slmult1\qc\partightenfactor0

\fs28 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b9\'a6\'c4\'dc
\f3\fs47\fsmilli23660 \cf2 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0
\ls1\ilvl0
\f0\b0\fs32 \cf2 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'d7\'d4\'84\'d3\'bb\'d8\'8f\'cd
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cf\'fb\'cf\'a2\'b7\'c0\'b3\'b7\'bb\'d8
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'df\'68\'b3\'cc\'bf\'d8\'d6\'c6
\f0 (
\f4 \'d2\'d1\'d6\'a7\'b3\'d6\'d5\'5a\'d2\'f4
\f0 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b6\'e0\'e9\'5f
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'b5\'da\'b6\'fe\'b4\'ce\'b5\'c7\'e4\'9b\'c3\'e2\'d5\'4a\'d7\'43
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'d6\'c3\'b5\'d7\'b9\'a6\'c4\'dc
\f0 (
\f4 \strike \strikec2 \'ee\'90\'cb\'c6\'d6\'c3\'ed\'94
\f0 \strike0\striked0 )\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'ce\'a2\'d0\'c5\'b4\'b0\'bf\'da\'d6\'c3\'ed\'94
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'95\'fe\'d4\'92\'b6\'e0\'df\'78\'84\'68\'b3\'fd
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d7\'d4\'84\'d3\'b5\'c7\'e4\'9b\'e9\'5f\'ea\'50
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'cd\'a8\'d6\'aa\'d6\'d0\'d0\'c4\'bf\'ec\'bd\'dd\'bb\'d8\'8f\'cd
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da\'b1\'ed\'c7\'e9\'b0\'fc\'8f\'cd\'d6\'c6
\f0  & 
\f4 \'b4\'e6\'83\'a6
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}
\f4 \expnd0\expndtw0\kerning0
\'d0\'a1\'d6\'fa\'ca\'d6\'99\'7a\'9c\'79\'b8\'fc\'d0\'c2\'cc\'e1\'d0\'d1
\f0 \
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}\expnd0\expndtw0\kerning0
alfred 
\f4 \'bf\'ec\'bd\'dd\'b0\'6c\'cb\'cd\'cf\'fb\'cf\'a2
\f0  & 
\f4 \'b4\'f2\'e9\'5f\'b4\'b0\'bf\'da
\f0  \
\pard\tx566\pardeftab720\partightenfactor0

\fs36\fsmilli18200 \cf2 \
\pard\pardeftab720\partightenfactor0

\f2\b\fs36 \cf2 \'b8\'fc\'d0\'c2\'c8\'d5\'d5\'49
\f3\fs47\fsmilli23660 \cf2 \
\pard\tx220\tx720\pardeftab720\li720\fi-720\sl264\slmult1\partightenfactor0
\ls2\ilvl0
\f0\b0\fs32 \cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d7\'d4\'84\'d3\'bb\'d8\'8f\'cd\'d1\'d3\'df\'74
\f0  & 
\f4 \'d0\'de\'b8\'c4\'d6\'c3\'ed\'94\'b4\'b0\'bf\'da\'bf\'ec\'bd\'dd
\f0 (2018-04-07)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6
\f0  Alfred 
\f4 \'bf\'ec\'bd\'dd\'b0\'6c\'cb\'cd\'cf\'fb\'cf\'a2
\f0  & 
\f4 \'b4\'f2\'e9\'5f\'c1\'c4\'cc\'ec\'b4\'b0\'bf\'da
\f0 (2018-03-18)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.1"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d5\'5a\'d2\'f4\'df\'68\'b3\'cc\'bf\'d8\'d6\'c6
\f0 mac & 
\f4 \'83\'9e\'bb\'af\'b3\'b7\'bb\'d8\'cf\'fb\'cf\'a2\'a1\'a2\'bf\'ec\'bd\'dd\'bb\'d8\'8f\'cd
\f0 (2018-03-03)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d0\'a1\'d6\'fa\'ca\'d6\'99\'7a\'9c\'79\'b8\'fc\'d0\'c2
\f0 &
\f4 \'b1\'ed\'c7\'e9\'b0\'fc\'8f\'cd\'d6\'c6\'b4\'e6\'83\'a6\'b5\'c8\'b5\'c8
\f0  (2018-02-24)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.4.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'b4\'b0\'bf\'da\'d6\'c3\'ed\'94
\f0 &
\f4 \'b6\'e0\'df\'78\'84\'68\'b3\'fd\'b5\'c8\'b5\'c8
\f0  (2017-10-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.3.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'c2\'d4\'f6\'d6\'c3\'b5\'d7
\f0 &
\f4 \'c3\'e2\'d5\'4a\'d7\'43
\f0  (2017-09-17)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.2.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d0\'de\'8f\'cd\'c1\'c4\'cc\'ec\'d3\'9b\'e4\'9b\'cf\'fb\'ca\'a7\'b5\'c4
\f0 bug (2017-09-11)}}\cf2 \expnd0\expndtw0\kerning0
\
\ls2\ilvl0\cf3 \kerning1\expnd0\expndtw0 {\listtext	\uc0\u8226 	}{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.1.0"}}{\fldrslt 
\f4 \expnd0\expndtw0\kerning0
\'d6\'d8\'98\'8b\'d7\'d4\'84\'d3\'bb\'d8\'8f\'cd\'a3\'ac\'8c\'8d\'ac\'46\'b6\'e0\'bb\'d8\'8f\'cd
\f0  (2017-08-23)}}\cf2 \expnd0\expndtw0\kerning0
\
\pard\pardeftab720\sl264\slmult1\partightenfactor0

\f2\b \cf2 \'d4\'94\'bc\'9a\'83\'c8\'c8\'dd\'d5\'88\'b2\'e9\'bf\'b4{\field{\*\fldinst{HYPERLINK "https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/blob/master/CHANGELOG.md"}}{\fldrslt 
\f0\b0 \cf3 CHANGELOG}}
\f0\b0\fs36\fsmilli18200 \cf2 \
}

================================================
FILE: Other/Uninstall.sh
================================================
# !/bin/bash

wechat_path="/Applications/WeChat.app"

if [ ! -d "$wechat_path" ]
then
wechat_path="/Applications/微信.app"
if [ ! -d "$wechat_path" ]
then
echo -e "\n\n应用程序文件夹中未发现微信,请检查微信是否有重命名或者移动路径位置"
exit
fi
fi

app_name="WeChat"
framework_name="WeChatPlugin"
app_bundle_path="${wechat_path}/Contents/MacOS"
app_executable_path="${app_bundle_path}/${app_name}"
app_executable_backup_path="${app_executable_path}_backup"
framework_path="${app_bundle_path}/${framework_name}.framework"

# 备份WeChat原始可执行文件
if [ -f "$app_executable_backup_path" ]
then
rm "$app_executable_path"
rm -rf "$framework_path"
mv "$app_executable_backup_path" "$app_executable_path"

if [ -f "$app_executable_backup_path" ]
then
	echo "卸载失败,请到 /Applications/WeChat.app/Contents/MacOS 路径,删除 WeChatPlugin.framework、WeChat 两个文件文件,并将 WeChat_backup 重命名为 WeChat"
else
	echo "\n\t卸载成功"
fi

else
echo "\n\t未发现微信小助手"
fi


================================================
FILE: Other/Update.sh
================================================
#!/bin/bash

app_name="WeChat"
shell_path="$(dirname "$0")"
wechat_path="/Applications/WeChat.app"
framework_name="WeChatPlugin"
app_bundle_path="/Applications/${app_name}.app/Contents/MacOS"
app_executable_path="${app_bundle_path}/${app_name}"
app_executable_backup_path="${app_executable_path}_backup"
framework_path="${app_bundle_path}/${framework_name}.framework"

# 对 WeChat 赋予权限
if [ ! -w "$wechat_path" ]
then
echo -e "\n\n为了将小助手写入微信, 请输入密码 : "
sudo chown -R $(whoami) "$wechat_path"
fi

# 备份 WeChat 原始可执行文件
if [ ! -f "$app_executable_backup_path" ]
then
cp "$app_executable_path" "$app_executable_backup_path"
fi

cp -r "${shell_path}/Products/Debug/${framework_name}.framework" ${app_bundle_path}
${shell_path}/insert_dylib --all-yes "${framework_path}/${framework_name}" "$app_executable_backup_path" "$app_executable_path"
${shell_path}/UpdateRemoteControlCommandsPlist.py


================================================
FILE: Other/UpdateRemoteControlCommandsPlist.py
================================================
#! /usr/bin/env python
# -*- coding: utf-8 -*-

"""
u为老用户自动同步新的plist,不改变已有的entry设置.
"""

import sys, os
import plistlib

PLIST_REMOTE_SUB_PATH = 'Products/Debug/WeChatPlugin.framework/Resources/TKRemoteControlCommands.plist'
PLIST_LOCAL_PATH = os.path.expanduser('~') + '/Library/Containers/com.tencent.xinWeChat/Data/Documents/TKWeChatPlugin/'

def ExportPlistToDict(plist, key):
    plist_dic = {}
    for l1 in plist:
        for l2 in l1:
            plist_dic[l2[key]] = l2
    return plist_dic

def SyncPlistContent(remote_plist, local_plist, key):
    local_plist_dic = ExportPlistToDict(local_plist, key)

    new_tmp_plist = []
    for l1 in remote_plist:
        new_tmp_plist.append([])
        for l2 in l1:
            if l2[key] in local_plist_dic:
                new_tmp_plist[-1].append(local_plist_dic[l2[key]])
            else:
                new_tmp_plist[-1].append(l2)

    return new_tmp_plist

def main():
    root_path = os.path.dirname(os.path.abspath(sys.argv[0])) + '/'
    PLIST_REMOTE_PATH = root_path + PLIST_REMOTE_SUB_PATH

    if not os.path.isfile(PLIST_REMOTE_PATH) or not os.path.exists(PLIST_LOCAL_PATH):
        print('Find plist failed... exit')
        return 1

    remote_plist = plistlib.readPlist(PLIST_REMOTE_PATH)

    for user in os.listdir(PLIST_LOCAL_PATH):
        user_plist_dir = os.path.join(PLIST_LOCAL_PATH, user, 'TKRemoteControlCommands.plist')
        if not os.path.isfile(user_plist_dir):
            continue

        local_plist = plistlib.readPlist(user_plist_dir)
        new_plist = SyncPlistContent(remote_plist, local_plist, 'function')
        plistlib.writePlist(new_plist, user_plist_dir)

    return 0

if __name__ == '__main__':
    main()


================================================
FILE: Podfile
================================================
platform :osx, '10.12'
inhibit_all_warnings!

target 'WeChatPlugin' do
  pod 'GCDWebServer', '~> 3.4.2'
end


================================================
FILE: Q&A.md
================================================
## 常见问题解决方法:

##### 0. 开场:   
由于微信每次更新都会更新一些方法,因此建议可以先备份当前可用的微信.app(~~其实我是不太建议更新的~~),这样避免微信更新之后,小助手部分功能失效或者闪退。

---

##### 1. 为什么我更新微信之后菜单栏小助手不见了?

因为微信更新之后,整个 app 都被覆盖,所以小助手也被清空,这时候只要重新安装小助手即可。

---

##### 2. 为什么更新了微信之后闪退/崩溃?

因为微信更换了API,导致小助手找不到对应的方法、函数,因此崩溃,解决方法有两种:1. 下载旧版本的微信。2.卸载微信小助手。

---

##### 3. 有没有微信群或者 QQ群讨论?

没有,目前没有这个打算。

---

##### 4. omw 无法安装或者是安装时候不是最新?

omw 的问题可以去 [oh-my-wechat](https://github.com/lmk123/oh-my-wechat) 提 issue,这样作者能够及时解决。
如果使用omw更新小助手不是最新的,可以使用其他安装方法试试。

---

##### 5. 如何卸载小助手?

在终端执行 Other 文件夹中的 Uninstall.sh,如果无效的话,那么再终端执行以下代码:

`cd /Applications/WeChat.app/Contents/MacOS && mv WeChat_backup WeChat`

如果在无效,那么请在Finder中应用程序中,右击微信.app,查看包内容,打开目录`/Contents/MacOS `,将`WeChat_backup`改名为 `WeChat`

---

##### 6. 如何禁止微信更新?

可以下载小助手1.7.5,如果是从官网下载,点击菜单栏的`微信小助手`-`禁止微信启动时检测更新`,如果是从 App Store,那么请在 App Store 中设置去除自动更新下载。

##### 7. 能不能做朋友圈或者微信抢红包?

* 不能,朋友圈工作量大,细节多,没有那么多的时间。
* 抢红包是不可能的,这辈子都不可能的,因为也没有人给我发红包。

---

##### 8. 能不能做群管理或者是自动添加好友?

不能,目前如果是有点微商性质的功能还是尽量避免,避免打扰到别人。

---

##### 9. 能不能做群发消息或者定时发送消息?

不能,目前如果是有点微商性质的功能还是尽量避免,避免打扰到别人。

---

##### 10. 为什么不支持企业微信?

企业微信跟普通的微信是两个app,方法也不一样,另外本人没有使用企业微信,因此不打算。

---

##### 11. 为什么菜单栏的小助手无法点击?

因为目前小助手的功能是分账号设置的,因为如果用户退出登录的话,那么将无法点击,只有重新登录微信才行。

---

##### 12. Safari /共享无法分享到微信?

目前无法解决。

---

##### 13. 休眠无法自动同步微信消息?

目前还无法解决。

---

##### 14. 作者是不是不更新了?

* 作者的目标是一年两更,现在已达标完成了。





================================================
FILE: README.md
================================================


![微信小助手.png](./Other/ScreenShots/wechatplugin.png)

![platform](https://img.shields.io/badge/platform-macos-lightgrey.svg)  [![release](https://img.shields.io/badge/release-v1.7.5-brightgreen.svg)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases)  ![support](https://img.shields.io/badge/support-wechat%202.3.22-blue.svg)  [![Readme](https://img.shields.io/badge/readme-english-yellow.svg)](./README_EN.md)   [![GitHub license](https://img.shields.io/github/license/TKkk-iOSer/WeChatPlugin-MacOS.svg)](./LICENSE)

# 微信小助手 v2.0

 **[English](./README_EN.md) | 中文**


[ [功能](#功能) &bull; [更新日志](#更新日志) &bull; [Demo演示](#demo演示) &bull; [使用](#使用) &bull; [安装](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/blob/master/Install.md) &bull; [卸载](#卸载) &bull; [TODO](#todo) ]

其他插件:
[ [wechat-alfred-workflow](https://github.com/TKkk-iOSer/wechat-alfred-workflow) &bull; [QQ 版本](https://github.com/TKkk-iOSer/QQPlugin-macOS) ]

---

## 功能
* 消息自动回复
* 消息防撤回
* 远程控制(已支持语音)
* 微信多开
* 第二次登录免认证
* 聊天置底功能(~~类似置顶~~)
* 微信窗口置顶
* 会话多选删除
* 自动登录开关
* 通知中心快捷回复
* 聊天窗口表情包复制 & 存储
* 小助手检测更新提醒
* alfred 快捷发送消息 & 打开窗口 (需安装:[wechat-alfred-workflow](https://github.com/TKkk-iOSer/wechat-alfred-workflow))
* 会话一键已读
* 一键清除空会话
* 支持国际化
* 新增一键更新
* 新增关于小助手
* 去除微信url转链(从此直接打开抖音链接🌝
* 史上最强 alfred 扩展🌚
* 新增移除会话(不删除聊天记录)
* 菜单栏(关于小助手)新增 alfred 开关 
* 新增是否使用微信自带浏览器开关
* 新增[LaunchBar 扩展](https://github.com/VDeamoV/WeChatHelper)
* 新增禁止微信检测更新开关(非App Store版本)
* ~~新增小助手.app安装方式~~
* 支持退群监控,撤回消息定位
* 支持微信 3.7.0 

**若无使用 alfred,则不必打开 alfred 开关**

远程控制:

- [x] 屏幕保护
- [x] 清空废纸篓
- [x] 锁屏、休眠、关机、重启
- [x] 退出QQ、WeChat、Chrome、Safari、所有程序
- [x] 网易云音乐(播放、暂停、下一首、上一首、喜欢、取消喜欢)
- [x] 小助手(获取指令、防撤回开关、自动回复开关、免认证登录开关)

**若想使用远程控制网易云音乐,请在“系统偏好设置 ==> 安全性与隐私 ==> 隐私 ==> 辅助功能”中添加微信、脚本编辑器**

---

## 更新日志

* [适配3.7.0(2023-03-12)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v2.0)
* [适配2.3.22 & 新增禁止微信检测更新开关(2019-01-13)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7.5)
* [适配2.3.19 & 修复安全漏洞(2018-10-23)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7.3)
* [适配2.3.17 & 加强 alfred 搜索(2018-07-24)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7.1)
* [新增好多功能…(2018-05-12)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.7)
* [新增自动回复延迟 & 修改置顶窗口快捷(2018-04-07)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6.1)
* [新增 Alfred 快捷发送消息 & 打开聊天窗口(2018-03-18)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.6)
* [新增语音远程控制mac & 优化撤回消息、快捷回复(2018-03-03)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.1)
* [新增小助手检测更新&表情包复制存储等等 (2018-02-24)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.5.0)
* [新增窗口置顶&多选删除等等 (2017-10-11)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.4.0)
* [新增置底&免认证 (2017-09-17)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.3.0)
* [修复聊天记录消失的bug (2017-09-11)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.2.0)
* [重构自动回复,实现多回复 (2017-08-23)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v1.1.0)

**详细内容请查看**[CHANGELOG](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/blob/master/CHANGELOG.md)

---

## Demo演示

* 消息防撤回
![消息防撤回.gif](http://upload-images.jianshu.io/upload_images/965383-30cbea645661e627.gif?imageMogr2/auto-orient/strip)

* 自动回复
![自动回复.gif](http://upload-images.jianshu.io/upload_images/965383-d488dce3696ba1b3.gif?imageMogr2/auto-orient/strip)

* 微信多开
![微信多开.gif](http://upload-images.jianshu.io/upload_images/965383-51d8eae02d48fda9.gif?imageMogr2/auto-orient/strip)

* 远程控制 (测试关闭Chrome、QQ、开启屏幕保护)
![远程控制.gif](http://upload-images.jianshu.io/upload_images/965383-0cf50d9b22b02f2f.gif?imageMogr2/auto-orient/strip)

* 免认证 & 置底 & 多选删除
![免认证&置底&多选删除](http://upload-images.jianshu.io/upload_images/965383-170592b03781cbf4.gif?imageMogr2/auto-orient/strip)

* 通知中心快捷回复
![快捷回复](./Other/ScreenShots/notification_quick_reply.gif)

* 聊天窗口表情复制 & 存储
<img src="./Other/ScreenShots/emotion_copy_export.png" height="400" hspace="50" />

* 语音远程控制 mac
![语音远程控制](./Other/ScreenShots/voice_remote_control.gif)

* Alfred 快速搜索 [wechat-alfred-workflow](https://github.com/TKkk-iOSer/wechat-alfred-workflow)   
![alfred](./Other/ScreenShots/alfred_search.gif)

* Alfred 搜索最近聊天列表 & 查看聊天记录   
![alfred](./Other/ScreenShots/alfred_chat_log.gif)

* 一键已读 & 一键清除空回话
![基本操作](./Other/ScreenShots/session_empty_and_clean.gif)

---

## 使用

* 消息防撤回:点击`开启消息防撤回`或者快捷键`command + t`,即可开启、关闭。
* 自动回复:点击`开启自动回复`或者快捷键`conmand + k`,将弹出自动回复设置的窗口,点击红色箭头的按钮设置开关。

>若关键字为 `*`,则任何信息都回复;
>若关键字为`x|y`,则 x 和 y 都回复;
>若关键字**或者**自动回复为空,则不开启该条自动回复;
>可设置延迟回复,单位:秒;
>若开启正则,请确认正则表达式书写正确,[在线正则表达式测试](http://tool.oschina.net/regex/)
**若开启特定联系人回复,则原先的群聊&私聊回复无效**

![自动回复设置.png](./Other/ScreenShots/auto_reply.png)

* 微信多开:点击`登录新微信`或者快捷键`command + shift + n`,即可多开微信。

* 远程控制:点击`远程控制 Mac OS`或者快捷键`command + shift + c`,即可打开控制窗口。

**注意:仅向自己账号发送指令有效**

![远程控制设置.png](./Other/ScreenShots/remote_control.png)

* Alfred 使用:请查看 [wechat-alfred-workflow](https://github.com/TKkk-iOSer/wechat-alfred-workflow)

---

## 安装

详细安装方法(或者需要重新编译)请查阅 [Install.md](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/blob/master/Install.md)

#### 1. 安装

**若提示无权限:`Permission denied`,执行 `sudo chmod -R 777 /Applications/WeChat.app`**

##### 1.1 需要安装Git

打开`应用程序-实用工具-Terminal(终端)`,执行下面的命令安装

`cd ~/Downloads && rm -rf WeChatPlugin-MacOS && git clone https://github.com/TKkk-iOSer/WeChatPlugin-MacOS.git --depth=1 && ./WeChatPlugin-MacOS/Other/Install.sh`


#### 2. 普通安装

* 点击`clone or download`按钮下载 WeChatPlugin 并解压,打开Terminal(终端),拖动解压后`Install.sh` 文件(在 Other 文件夹中)到 Terminal 回车即可。

#### 3. 安装完成

* 重启微信,在**菜单栏**中看到**微信小助手**即安装成功。

![微信小助手.png](./Other/ScreenShots/wechatplugin.png)

---

## 卸载

打开Terminal(终端),拖动解压后`Uninstall.sh` 文件(在 Other 文件夹中)到 Terminal 回车即可。

---

## TODO
- [x] 增加`Alfred`搜索
- [ ] 查看单向好友
- [ ] 增加 brew 安装方式
- [x] 完善自动回复(指定好友回复)
- [x] 完善消息防撤回(显示撤回用户昵称)
- [x] ~~清除微信缓存(官方已加)~~
- [x] 优化小助手设置(更新后保留相关设置,更新提醒)
- [x] 语音远程控制 mac
- [x] 支持中英文
- [ ] 支持深色模式

---

## 依赖

* [insert_dylib](https://github.com/Tyilo/insert_dylib)
* [fishhook](https://github.com/facebook/fishhook)
* [GCDWebServer](https://github.com/swisspol/GCDWebServer)

---

### 免责声明
* 使用插件有风险,使用需谨慎。
* 本项目旨在提升生活幸福感使用,不可用于商业和个人其他意图。若使用不当,请使用者自行承担。
* 如有侵权,请联系本人。tkk.ioser@gmail.com




================================================
FILE: README_EN.md
================================================


![wechat assistant.png](./Other/ScreenShots/en/wechatplugin.png)

![platform](https://img.shields.io/badge/platform-macos-lightgrey.svg)  [![release](https://img.shields.io/badge/release-v1.7-brightgreen.svg)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases)  ![support](https://img.shields.io/badge/support-wechat%202.3.10-blue.svg)  [![Readme](https://img.shields.io/badge/readme-中文-yellow.svg)](./README.md)  [![GitHub license](https://img.shields.io/github/license/TKkk-iOSer/WeChatPlugin-MacOS.svg)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/blob/master/LICENSE)

# WeChatPlugin-macOS v1.7

**English | [中文](./README.md)**

[ [Feature](#feature) &bull; [Install](#install) &bull; [Uninstall](#uninstall) &bull; [Usage](#usage)]

Other plugin:  
[ [wechat-alfred-workflow](https://github.com/TKkk-iOSer/wechat-alfred-workflow) &bull; [QQPlugin-macOS](https://github.com/TKkk-iOSer/QQPlugin-macOS) &bull; [WeChatPlugin-iOS](https://github.com/TKkk-iOSer/WeChatPlugin-iOS) ]

---

## Feature

* Message auto reply
* Prevent message recall
* Remote control(support voice control)
* Multiple WeChat
* Auto Auth Login
* Session Sticky Bottom
* Windows Sticky Top
* Session multiple delete
* Auto Login Switch
* Quick reply to notifications
* Copy or Export Sticker
* Update plugin
* Reply or Open session by Alfred  (dependency:[wechat-alfred-workflow](https://github.com/TKkk-iOSer/wechat-alfred-workflow))
* Make all session As Read
* Clear all empty session
* Remove url redirect

Remote Control:

- [x] Save Screen
- [x] Empty Trash
- [x] Lock Screen & Sleep  & Shut Down & Restart
- [x] Quit some app, include QQ、WeChat、Chrome、Safari。
- [x] NeteaseMusic(play、pause、next song、previous song、like song、unlike song)
- [x] Assistant(get all directive、prevent recall switch、auto reply switch、auto auth switch)

**If you want to control NeteaseMusic, please allow WeChat Control in "System Preferences-Security & Privacy-Privacy-Accessibility"**

---

## Install

**1. If you have installed Git**

open `/Applications/Utilities/Terminal.app`,run command

`cd ~/Downloads && rm -rf WeChatPlugin-MacOS && git clone https://github.com/TKkk-iOSer/WeChatPlugin-MacOS.git --depth=1 && ./WeChatPlugin-MacOS/Other/Install.sh`, and enter the mac password.

**2. Normal install**

* click `clone or download` button to download project and unzip it,open Terminal.app,Drag the `Install.sh` file(in `Other` Folder) to Terminal.

---

## Uninstall
open `/Applications/Utilities/Terminal.app`,Drag the `Uninstall.sh` file(in `Other` Folder) to Terminal.

---

## Usage

> A few examples of how to use WeChatPlugin-macOS.

* Prevent message recall   
  ![Prevent message recall](./Other/ScreenShots/en/prevent_recall.gif)

* Message auto reply
  ![Message auto reply](./Other/ScreenShots/en/auto_reply.gif)

* Auto Login & Multiple WeChat
  ![Auto Auth & Multiple WeChat](./Other/ScreenShots/en/auto_auth_and_new.gif)

* Remote control (quit Chrome and Save Screen)
  ![remote_control.gif](./Other/ScreenShots/en/remote_control.gif)

* Session multiple delete & session sticky bottom &  delete empty session
  ![wechat assistant.png](./Other/ScreenShots/en/multiselect_and_stick_bottom_and_clear_empty.gif)


* Quick reply to notifications &  make all as Read  
  ![wechat assistant.png](./Other/ScreenShots/en/quick_reply_and_make_read.gif)


* Copy or export sticker  
  <img src="./Other/ScreenShots/en/emotion_copy_export.png" height="400" hspace="50" />

* Reply or Open session by Alfred  [wechat-alfred-workflow](https://github.com/TKkk-iOSer/wechat-alfred-workflow)   
  ![Alfred](./Other/ScreenShots/en/alfred.gif)


---

## Dependency

* [insert_dylib](https://github.com/Tyilo/insert_dylib)
* [fishhook](https://github.com/facebook/fishhook)
* [GCDWebServer](https://github.com/swisspol/GCDWebServer)




================================================
FILE: WeChatPlugin/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>$(MARKETING_VERSION)</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2017年 tk. All rights reserved.</string>
	<key>NSPrincipalClass</key>
	<string></string>
	<key>showUpdateWindow</key>
	<true/>
	<key>versionInfo</key>
	<string>v1.7.5(2019-01-13):\n👉🏻  适配微信 Version. 2.3.22\n👉🏼  菜单栏新增是否允许微信启动时检测更新(非AppStore版本)\n👉🏽  优化 XML 解析\n\n\n\nv1.7.3 (2018-10-22):\n👉🏻  适配微信 Version. 2.3.19\n👉🏼  修复安全漏洞(请务必更新,若有安装QQ插件也需要更新)\n👉🏽  菜单栏-关于小助手-新增 alfred 开关(若不使用 aflred 可关闭)  \n\nv1.7.1 (2018-07-24):\n👉🏻  适配微信 Version. 2.3.17\n👉🏼  新增 alfred 搜索最近聊天列表\n👉🏽  新增 alfred 查看用户聊天记录\n     (需更新wechat-alfred-workflow)\n\nv1.7 (2018-05-12):\n👉🏻  新增不同账户设置不同的自动回复&amp;远程控制\n👉🏼  自动回复新增总开关&amp;指定联系人\n👉🏽  远程控制新增控制小助手配置\n👉🏾  新增一键已读\n👉  新增一键清除空回话\n👉🏻  新增国际化(支持英、简、繁)\n👉🏼  新增关于小助手\n👉🏽  新增在线更新小助手  \n👉🏾  去除微信url转链处理(从此直接打开抖音链接🌝 \n👉🏿  修复无法免认证登录&amp;多开等bug \n</string>
</dict>
</plist>


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSButton+Action.h
================================================
//
//  NSButton+Action.h
//  WeChatPlugin
//
//  Created by TK on 2017/9/19.
//  Copyright © 2017年 tk. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface NSButton (Action)

+ (instancetype)tk_buttonWithTitle:(NSString *)title target:(id)target action:(SEL)action;
+ (instancetype)tk_checkboxWithTitle:(NSString *)title target:(id)target action:(SEL)action;

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSButton+Action.m
================================================
//
//  NSButton+Action.m
//  WeChatPlugin
//
//  Created by TK on 2017/9/19.
//  Copyright © 2017年 tk. All rights reserved.
//

#import "NSButton+Action.h"

@implementation NSButton (Action)

+ (instancetype)tk_checkboxWithTitle:(NSString *)title target:(id)target action:(SEL)action {
    NSButton *btn = [self tk_buttonWithTitle:title target:target action:action];
    [btn setButtonType:NSButtonTypeSwitch];
    
    return btn;
}

+ (instancetype)tk_buttonWithTitle:(NSString *)title target:(id)target action:(SEL)action {
    NSButton *btn = ({
        NSButton *btn = [[self alloc] init];
        btn.title = title;
        btn.target = target;
        btn.action = action;
        
        btn;
    });
    
    return btn;
}

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSDate+Action.h
================================================
//
//  NSDate+Action.h
//  WeChatPlugin
//
//  Created by TK on 2018/7/25.
//  Copyright © 2018年 tk. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSDate (Action)

- (BOOL)isToday;
- (BOOL)isYesterday;

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSDate+Action.m
================================================
//
//  NSDate+Action.m
//  WeChatPlugin
//
//  Created by TK on 2018/7/25.
//  Copyright © 2018年 tk. All rights reserved.
//

#import "NSDate+Action.h"

@implementation NSDate (Action)

- (BOOL)isToday {
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSInteger unit = NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear ;
    
    NSDateComponents *nowComponents = [calendar components:unit fromDate:[NSDate date]];
    NSDateComponents *selfComponents = [calendar components:unit fromDate:self];
    
    return (selfComponents.year == nowComponents.year) && (selfComponents.month == nowComponents.month) && (selfComponents.day == nowComponents.day);
}

- (BOOL)isYesterday {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd";
    
    NSDate *nowDate = [formatter dateFromString:[formatter stringFromDate:[NSDate date]]];
    NSDate *selfDate = [formatter dateFromString:[formatter stringFromDate:self]];;
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *cmps = [calendar components:NSCalendarUnitDay fromDate:selfDate toDate:nowDate options:0];
    
    return cmps.day == 1;
}

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSMenu+Action.h
================================================
//
//  NSMenu+Action.h
//  WeChatPlugin
//
//  Created by TK on 2018/4/15.
//  Copyright © 2018年 tk. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface NSMenu (Action)

- (void)addItems:(NSArray *)subItems;

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSMenu+Action.m
================================================
//
//  NSMenu+Action.m
//  WeChatPlugin
//
//  Created by TK on 2018/4/15.
//  Copyright © 2018年 tk. All rights reserved.
//

#import "NSMenu+Action.h"

@implementation NSMenu (Action)

- (void)addItems:(NSArray *)subItems {
    for (NSMenuItem *item in subItems) {
        NSAssert([item isKindOfClass:[NSMenuItem class]], @"the elements must be a NSMenuItem!");
        [self addItem:item];
    }
}

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSMenuItem+Action.h
================================================
//
//  NSMenuItem+Action.h
//  WeChatPlugin
//
//  Created by TK on 2018/4/25.
//  Copyright © 2018年 tk. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface NSMenuItem (Action)

+ (NSMenuItem *)menuItemWithTitle:(NSString *)title action:(SEL)selector target:(id)target keyEquivalent:(NSString *)key state:(NSControlStateValue)state;

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSMenuItem+Action.m
================================================
//
//  NSMenuItem+Action.m
//  WeChatPlugin
//
//  Created by TK on 2018/4/25.
//  Copyright © 2018年 tk. All rights reserved.
//

#import "NSMenuItem+Action.h"

@implementation NSMenuItem (Action)

+ (NSMenuItem *)menuItemWithTitle:(NSString *)title action:(SEL)selector target:(id)target keyEquivalent:(NSString *)key state:(NSControlStateValue)state {
    NSMenuItem *item = [[self alloc] initWithTitle:title action:selector keyEquivalent:key];
    item.target = target;
    item.state = state;
    
    return item;
}

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSString+Action.h
================================================
//
//  NSString+Action.h
//  WeChatPlugin
//
//  Created by TK on 2018/5/1.
//  Copyright © 2018年 tk. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSString (Action)

- (CGFloat)widthWithFont:(NSFont *)font;
- (NSRect)rectWithFont:(NSFont *)font;
- (NSString *)substringFromString:(NSString *)fromStr;
- (NSString *)substringToString:(NSString *)fromStr;
- (NSString *)substringFromString:(NSString *)fromStr toString:(NSString *)toString; 
@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSString+Action.m
================================================
//
//  NSString+Action.m
//  WeChatPlugin
//
//  Created by TK on 2018/5/1.
//  Copyright © 2018年 tk. All rights reserved.
//

#import "NSString+Action.h"

@implementation NSString (Action)

- (CGFloat)widthWithFont:(NSFont *)font {
    return [self rectWithFont:font].size.width;
}

- (NSRect)rectWithFont:(NSFont *)font {
    return [self boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: font}];
}

- (NSString *)substringFromString:(NSString *)fromStr {
    if (!fromStr || [fromStr isKindOfClass:NSNull.class]) {
        return self;
    }
    NSRange range = [self rangeOfString:fromStr];
    if (range.length > 0) {
        return [self substringFromIndex:range.location + range.length];
    }
    return nil;
}

- (NSString *)substringToString:(NSString *)fromStr {
    if (!fromStr || [fromStr isKindOfClass:NSNull.class]) {
        return self;
    }
   NSRange range = [self rangeOfString:fromStr];
    if (range.length > 0) {
        return [self substringToIndex:range.location];
    }
    return nil;
}

- (NSString *)substringFromString:(NSString *)fromStr toString:(NSString *)toString {
    NSString *subString = [self substringFromString:fromStr];
    subString = [subString substringToString:toString];

    return subString;
}
@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSTextField+Action.h
================================================
//
//  NSTextField+Action.h
//  WeChatPlugin
//
//  Created by TK on 2017/9/19.
//  Copyright © 2017年 tk. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface NSTextField (Action)

+ (instancetype)tk_labelWithString:(NSString *)stringValue;

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSTextField+Action.m
================================================
//
//  NSTextField+Action.m
//  WeChatPlugin
//
//  Created by TK on 2017/9/19.
//  Copyright © 2017年 tk. All rights reserved.
//

#import "NSTextField+Action.h"

@implementation NSTextField (Action)

+ (instancetype)tk_labelWithString:(NSString *)stringValue {
    NSTextField *textField = ({
        NSTextField *textField = [[self alloc] initWithFrame:NSMakeRect(10, 10, 200, 17)];
        [textField setStringValue:stringValue];
        [textField setBezeled:NO];
        [textField setDrawsBackground:NO];
        [textField setEditable:NO];
        [textField setSelectable:NO];
        
        textField;
    });

    return textField;
}

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSView+Action.h
================================================
//
//  NSView+Action.h
//  WeChatPlugin
//
//  Created by TK on 2017/8/20.
//  Copyright © 2017年 tk. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface NSView (Action)

- (void)addSubviews:(NSArray *)subViews;

@end

@interface NSView (Size)

@property (nonatomic) CGPoint origin;
@property (nonatomic) CGSize size;
@property (nonatomic) CGFloat x;
@property (nonatomic) CGFloat y;
@property (nonatomic) CGFloat width;
@property (nonatomic) CGFloat height;

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSView+Action.m
================================================
//
//  NSView+Action.m
//  WeChatPlugin
//
//  Created by TK on 2017/8/20.
//  Copyright © 2017年 tk. All rights reserved.
//

#import "NSView+Action.h"

@implementation NSView (Action)

- (void)addSubviews:(NSArray *)subViews {
    for (NSView *v in subViews) {
        NSAssert([v isKindOfClass:[NSView class]], @"the elements must be a view!");
        [self addSubview:v];
    }
}

@end

@implementation NSView (Size)

- (CGPoint)origin {
    return self.frame.origin;
}

- (void)setOrigin:(CGPoint)point {
    CGRect rect = self.frame;
    
    rect.origin = point;
    self.frame = rect;
}

- (CGSize)size {
    return self.frame.size;
}

- (void)setSize:(CGSize)size {
    CGRect rect = self.frame;
    
    rect.size = size;
    self.frame = rect;
}

- (CGFloat)x {
    return self.frame.origin.x;
}

- (void)setX:(CGFloat)x {
    [self setOrigin:CGPointMake(x, self.y)];
}

- (CGFloat)y {
    return self.frame.origin.y;
}

- (void)setY:(CGFloat)y {
    [self setOrigin:CGPointMake(self.x, y)];
}

- (CGFloat)width {
    return self.frame.size.width;
}

- (void)setWidth:(CGFloat)width {
    [self setSize:CGSizeMake(width, self.height)];
}

- (CGFloat)height {
    return self.frame.size.height;
}

- (void)setHeight:(CGFloat)height {
    [self setSize:CGSizeMake(self.width, height)];
}

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSWindowController+Action.h
================================================
//
//  NSWindowController+Action.h
//  WeChatPlugin
//
//  Created by TK on 2018/5/4.
//  Copyright © 2018年 tk. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface NSWindowController (Action)

- (void)show;

@end


================================================
FILE: WeChatPlugin/Sources/Common/Category/NSWindowController+Action.m
================================================
//
//  NSWindowController+Action.m
//  WeChatPlugin
//
//  Created by TK on 2018/5/4.
//  Copyright © 2018年 tk. All rights reserved.
//

#import "NSWindowController+Action.h"

@implementation NSWindowController (Action)

- (void)show {
    [self showWindow:self];
    [self.window center];
    [self.window makeKeyWindow];
}

@end


================================================
FILE: WeChatPlugin/Sources/Common/Macro/ColorConstant.h
================================================
//
//  Color.h
//  WeChatPlugin
//
//  Created by TK on 2017/8/20.
//  Copyright © 2017年 tk. All rights reserved.
//

#ifndef Color_h
#define Color_h

#define TK_RGBA(r, g, b, a) [NSColor colorWithRed:(r) / 255.0 \
green:(g) / 255.0 \
blue:(b) / 255.0 \
alpha:(a)]

#define TK_RGB(r, g, b) TK_RGBA(r, g, b, 1.0)
#define TK_GRAYA(c, a) TK_RGBA(c, c, c, a)
#define TK_GRAY(c) TK_GRAYA(c, 1.0)

#define kBG1 TK_GRAY(0xec)
#define kBG2 TK_GRAY(0xe3)
#define kBG3 TK_GRAYA(0x2a, 0.5)
#define kBG4 TK_GRAYA(0x7a, 0.5)

#endif /* Color_h */


================================================
FILE: WeChatPlugin/Sources/Common/Macro/DefineConstant.h
================================================
//
//  DefineConstant.h
//  WeChatPlugin
//
//  Created by TK on 2018/4/14.
//  Copyright © 2018年 tk. All rights reserved.
//

#ifndef DefineConstant_h
#define DefineConstant_h

#define TKLocalizedString(key)  [[NSBundle bundleWithIdentifier:@"tk.WeChatPlugin"] localizedStringForKey:(key) value:@"" table:nil]
#define WXLocalizedString(key)  [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]

#endif /* DefineConstant_h */


================================================
FILE: WeChatPlugin/Sources/Common/Macro/NotifyConstant.h
================================================

//
//  NotifyConstant.h.h
//  WeChatPlugin
//
//  Created by TK on 2018/4/23.
//  Copyright © 2018年 tk. All rights reserved.
//

#import <Foundation/Foundation.h>

#ifndef NotifyConstant_h_h
#define NotifyConstant_h_h

static NSString * const NOTIFY_AUTO_REPLY_CHANGE = @"NOTIFY_AUTO_REPLY_CHANGE";
static NSString * const NOTIFY_PREVENT_REVOKE_CHANGE  = @"NOTIFY_PREVENT_REVOKE_CHANGE";
static NSString * const NOTIFY_AUTO_AUTH_CHANGE = @"NOTIFY_AUTO_AUTH_CHANGE";

#endif /* NotifyConstant_h_h */


================================================
FILE: WeChatPlugin/Sources/Common/TKPrefixHeader.pch
================================================
//
//  TKPrefixHeader.pch
//  WeChatPlugin
//
//  Created by TK on 2017/8/20.
//  Copyright © 2017年 tk. All rights reserved.
//

#ifndef TKPrefixHeader_pch
#define TKPrefixHeader_pch

#ifdef __OBJC__
#import "ColorConstant.h"
#import "DefineConstant.h"
#import "NotifyConstant.h"
#import "NSView+Action.h"
#import "NSButton+Action.h"
#import "NSTextField+Action.h"
#import "NSMenu+Action.h"
#import "NSString+Action.h"
#import "NSDate+Action.h"
#import "NSWindowController+Action.h"
#import "WeChatPlugin.h"
#import "TKUtility.h"
#endif

#endif /* TKPrefixHeader_pch */


================================================
FILE: WeChatPlugin/Sources/Config/TKConstants.h
================================================
//
//  TKConstants.h
//  WeChatPlugin
//
//  Created by TK on 2020/3/14.
//  Copyright © 2020 tk. All rights reserved.
//

#ifndef TKConstants_h
#define TKConstants_h

static NSString * const kTKScrollToMessageKey = @"click://kTKScrollToMessageKey";
static NSString * const kTKRevokeLocationKey = @"kTKRevokeLocationKey";
static NSString * const kTKShowMembeContactProfileKey = @"kTKShowMembeContactProfileKey";
static NSInteger  const kTKMemberQuitDayInterval = 30*2;

#endif /* TKConstants_h */


================================================
FILE: WeChatPlugin/Sources/Config/TKWeChatPluginConfig.h
================================================
//
//  TKWeChatPluginConfig.h
//  WeChatPlugin
//
//  Created by TK on 2017/4/19.
//  Copyright © 2017年 tk. All rights reserved.
//


#import <Foundation/Foundation.h>

@interface TKWeChatPluginConfig : NSObject

@property (nonatomic, assign) BOOL preventRevokeEnable;                 /**<    是否开启防撤回    */
@property (nonatomic, assign) BOOL preventSelfRevokeEnable;             /**<    是否防撤回自己    */
@property (nonatomic, assign) BOOL autoReplyEnable;                     /**<    是否开启自动回复  */
@property (nonatomic, assign) BOOL autoAuthEnable;                      /**<    是否免认证登录    */
@property (nonatomic, assign) BOOL autoLoginEnable;                     /**<    是否自动登录      */
@property (nonatomic, assign) BOOL onTop;                               /**<    是否要置顶微信    */
@property (nonatomic, assign) BOOL multipleSelectionEnable;             /**<    是否要进行多选    */
@property (nonatomic, assign) BOOL forbidCheckVersion;                  /**<    禁止检测版本      */
@property (nonatomic, assign) BOOL alfredEnable;                        /**<    是否开启Alfred   */
@property (nonatomic, assign) BOOL checkUpdateWechatEnable;             /**<    是否允许微信启动检测更新  */
@property (nonatomic, assign) BOOL systemBrowserEnable;                 /**<    是否使用自身浏览器打开连接   */
@property (nonatomic, assign) BOOL memberExitMonitoringEnable;                 /**<    是否使用自身浏览器打开连接   */
@property (nonatomic, strong) NSMutableArray *autoReplyModels;           /**<    自动回复的数组    */
@property (nonatomic, strong) NSMutableArray *remoteControlModels;       /**<    远程控制的数组    */
@property (nonatomic, strong) NSMutableArray *ignoreSessionModels;       /**<    聊天置底的数组    */
@property (nonatomic, strong) NSMutableArray *selectSessions;            /**<    已经选中的会话    */
@property (nonatomic, strong) NSMutableSet *revokeMsgSet;                /**<    撤回的消息集合    */
@property (nonatomic, strong) NSMutableSet *unreadSessionSet;            /**<    标记未读消息集合    */
@property (nonatomic, copy) NSString *currentUserName;                   /**<    当前用户的id     */
@property (nonatomic, copy, readonly) NSDictionary *localInfoPlist;
@property (nonatomic, copy, readonly) NSDictionary *romoteInfoPlist;
@property (nonatomic, strong) NSMutableDictionary *quitChatRoomMemberDict;     /**<    退群的好友集合    */

- (void)saveAutoReplyModels;
- (void)saveRemoteControlModels;
- (void)saveIgnoreSessionModels;
- (void)saveQuitChatRoomMemberDict;

+ (instancetype)sharedConfig;

@end



================================================
FILE: WeChatPlugin/Sources/Config/TKWeChatPluginConfig.m
================================================
//
//  TKWeChatPluginConfig.m
//  WeChatPlugin
//
//  Created by TK on 2017/4/19.
//  Copyright © 2017年 tk. All rights reserved.
//

#import "TKWeChatPluginConfig.h"
#import "TKRemoteControlModel.h"
#import "TKAutoReplyModel.h"
#import "TKIgnoreSessonModel.h"
#import "WeChatPlugin.h"

static NSString * const kTKPreventRevokeEnableKey = @"kTKPreventRevokeEnableKey";
static NSString * const kTKPreventSelfRevokeEnableKey = @"kTKPreventSelfRevokeEnableKey";
static NSString * const kTKAutoReplyEnableKey = @"kTKAutoReplyEnableKey";
static NSString * const kTKAutoAuthEnableKey = @"kTKAutoAuthEnableKey";
static NSString * const kTKAutoLoginEnableKey = @"kTKAutoLoginEnableKey";
static NSString * const kTKOnTopKey = @"kTKOnTopKey";
static NSString * const kTKForbidCheckVersionKey = @"kTKForbidCheckVersionKey";
static NSString * const kTKAlfredEnableKey = @"kTKAlfredEnableKey";
static NSString * const kTKCheckUpdateWechatEnableKey = @"kTKCheckUpdateWechatEnableKey";
static NSString * const kTKSystemBrowserEnableKey = @"kTKSystemBrowserEnableKey";
static NSString * const kTKmemberExitMonitoringEnableKey = @"kTKmemberExitMonitoringEnableKey";
static NSString * const kTKWeChatResourcesPath = @"/Applications/WeChat.app/Contents/MacOS/WeChatPlugin.framework/Resources/";
static NSString * const kTKWeChatRemotePlistPath = @"https://raw.githubusercontent.com/TKkk-iOSer/WeChatPlugin-MacOS/master/Other/Products/Debug/WeChatPlugin.framework/Resources/Info.plist";

@interface TKWeChatPluginConfig ()

@property (nonatomic, copy) NSString *remoteControlPlistFilePath;
@property (nonatomic, copy) NSString *autoReplyPlistFilePath;
@property (nonatomic, copy) NSString *ignoreSessionPlistFilePath;
@property (nonatomic, copy) NSString *quitChatroomMemberPlistFilePath;

@property (nonatomic, copy) NSDictionary *localInfoPlist;
@property (nonatomic, copy) NSDictionary *romoteInfoPlist;

@end

@implementation TKWeChatPluginConfig

+ (instancetype)sharedConfig {
    static TKWeChatPluginConfig *config = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        config = [[TKWeChatPluginConfig alloc] init];
    });
    return config;
}

- (instancetype)init {
    self = [super init];
    if (self) {
        _preventRevokeEnable = [[NSUserDefaults standardUserDefaults] boolForKey:kTKPreventRevokeEnableKey];
        _preventSelfRevokeEnable = [[NSUserDefaults standardUserDefaults] boolForKey:kTKPreventSelfRevokeEnableKey];
        _autoReplyEnable = [[NSUserDefaults standardUserDefaults] boolForKey:kTKAutoReplyEnableKey];
        _autoAuthEnable = [[NSUserDefaults standardUserDefaults] boolForKey:kTKAutoAuthEnableKey];
        _autoLoginEnable = [[NSUserDefaults standardUserDefaults] boolForKey:kTKAutoLoginEnableKey];
        _onTop = [[NSUserDefaults standardUserDefaults] boolForKey:kTKOnTopKey];
        _forbidCheckVersion = [[NSUserDefaults standardUserDefaults] boolForKey:kTKForbidCheckVersionKey];
        _alfredEnable = [[NSUserDefaults standardUserDefaults] boolForKey:kTKAlfredEnableKey];
        _checkUpdateWechatEnable = [[NSUserDefaults standardUserDefaults] boolForKey:kTKCheckUpdateWechatEnableKey];
        _systemBrowserEnable = [[NSUserDefaults standardUserDefaults] boolForKey:kTKSystemBrowserEnableKey];
        _memberExitMonitoringEnable = [[NSUserDefaults standardUserDefaults] boolForKey:kTKmemberExitMonitoringEnableKey];
    }
    return self;
}

- (void)setPreventR
Download .txt
gitextract_a01jbg_c/

├── .github/
│   └── ISSUE_TEMPLATE.md
├── .gitignore
├── CHANGELOG.md
├── Install.md
├── LICENSE
├── Other/
│   ├── Install.sh
│   ├── Products/
│   │   └── Debug/
│   │       └── WeChatPlugin.framework/
│   │           ├── Headers/
│   │           │   └── WeChatPlugin.h
│   │           ├── Modules/
│   │           │   └── module.modulemap
│   │           ├── Resources/
│   │           │   ├── Base.lproj/
│   │           │   │   ├── TKAboutWindowController.nib
│   │           │   │   └── TKRemoteControlWindowController.nib
│   │           │   ├── Info.plist
│   │           │   ├── TKAutoReplyWindowController.nib
│   │           │   ├── TKDownloadWindowController.nib
│   │           │   ├── TKRemoteControlCommands.plist
│   │           │   ├── TKRemoteControlScript.scpt
│   │           │   ├── en.lproj/
│   │           │   │   ├── Localizable.strings
│   │           │   │   ├── TKAboutWindowController.nib
│   │           │   │   └── about.rtfd/
│   │           │   │       └── TXT.rtf
│   │           │   ├── zh-Hans.lproj/
│   │           │   │   ├── Localizable.strings
│   │           │   │   ├── TKRemoteControlWindowController.nib
│   │           │   │   └── about.rtfd/
│   │           │   │       └── TXT.rtf
│   │           │   └── zh-Hant.lproj/
│   │           │       ├── Localizable.strings
│   │           │       ├── TKAboutWindowController.nib
│   │           │       ├── TKRemoteControlWindowController.nib
│   │           │       └── about.rtfd/
│   │           │           └── TXT.rtf
│   │           ├── Versions/
│   │           │   ├── A/
│   │           │   │   ├── Headers/
│   │           │   │   │   └── WeChatPlugin.h
│   │           │   │   ├── Modules/
│   │           │   │   │   └── module.modulemap
│   │           │   │   ├── Resources/
│   │           │   │   │   ├── Base.lproj/
│   │           │   │   │   │   ├── TKAboutWindowController.nib
│   │           │   │   │   │   └── TKRemoteControlWindowController.nib
│   │           │   │   │   ├── Info.plist
│   │           │   │   │   ├── TKAutoReplyWindowController.nib
│   │           │   │   │   ├── TKDownloadWindowController.nib
│   │           │   │   │   ├── TKRemoteControlCommands.plist
│   │           │   │   │   ├── TKRemoteControlScript.scpt
│   │           │   │   │   ├── en.lproj/
│   │           │   │   │   │   ├── Localizable.strings
│   │           │   │   │   │   ├── TKAboutWindowController.nib
│   │           │   │   │   │   └── about.rtfd/
│   │           │   │   │   │       └── TXT.rtf
│   │           │   │   │   ├── zh-Hans.lproj/
│   │           │   │   │   │   ├── Localizable.strings
│   │           │   │   │   │   ├── TKRemoteControlWindowController.nib
│   │           │   │   │   │   └── about.rtfd/
│   │           │   │   │   │       └── TXT.rtf
│   │           │   │   │   └── zh-Hant.lproj/
│   │           │   │   │       ├── Localizable.strings
│   │           │   │   │       ├── TKAboutWindowController.nib
│   │           │   │   │       ├── TKRemoteControlWindowController.nib
│   │           │   │   │       └── about.rtfd/
│   │           │   │   │           └── TXT.rtf
│   │           │   │   └── WeChatPlugin
│   │           │   └── Current/
│   │           │       ├── Headers/
│   │           │       │   └── WeChatPlugin.h
│   │           │       ├── Modules/
│   │           │       │   └── module.modulemap
│   │           │       ├── Resources/
│   │           │       │   ├── Base.lproj/
│   │           │       │   │   ├── TKAboutWindowController.nib
│   │           │       │   │   └── TKRemoteControlWindowController.nib
│   │           │       │   ├── Info.plist
│   │           │       │   ├── TKAutoReplyWindowController.nib
│   │           │       │   ├── TKDownloadWindowController.nib
│   │           │       │   ├── TKRemoteControlCommands.plist
│   │           │       │   ├── TKRemoteControlScript.scpt
│   │           │       │   ├── en.lproj/
│   │           │       │   │   ├── Localizable.strings
│   │           │       │   │   ├── TKAboutWindowController.nib
│   │           │       │   │   └── about.rtfd/
│   │           │       │   │       └── TXT.rtf
│   │           │       │   ├── zh-Hans.lproj/
│   │           │       │   │   ├── Localizable.strings
│   │           │       │   │   ├── TKRemoteControlWindowController.nib
│   │           │       │   │   └── about.rtfd/
│   │           │       │   │       └── TXT.rtf
│   │           │       │   └── zh-Hant.lproj/
│   │           │       │       ├── Localizable.strings
│   │           │       │       ├── TKAboutWindowController.nib
│   │           │       │       ├── TKRemoteControlWindowController.nib
│   │           │       │       └── about.rtfd/
│   │           │       │           └── TXT.rtf
│   │           │       └── WeChatPlugin
│   │           └── WeChatPlugin
│   ├── Uninstall.sh
│   ├── Update.sh
│   ├── UpdateRemoteControlCommandsPlist.py
│   └── insert_dylib
├── Podfile
├── Q&A.md
├── README.md
├── README_EN.md
├── WeChatPlugin/
│   ├── Info.plist
│   ├── Sources/
│   │   ├── Common/
│   │   │   ├── Category/
│   │   │   │   ├── NSButton+Action.h
│   │   │   │   ├── NSButton+Action.m
│   │   │   │   ├── NSDate+Action.h
│   │   │   │   ├── NSDate+Action.m
│   │   │   │   ├── NSMenu+Action.h
│   │   │   │   ├── NSMenu+Action.m
│   │   │   │   ├── NSMenuItem+Action.h
│   │   │   │   ├── NSMenuItem+Action.m
│   │   │   │   ├── NSString+Action.h
│   │   │   │   ├── NSString+Action.m
│   │   │   │   ├── NSTextField+Action.h
│   │   │   │   ├── NSTextField+Action.m
│   │   │   │   ├── NSView+Action.h
│   │   │   │   ├── NSView+Action.m
│   │   │   │   ├── NSWindowController+Action.h
│   │   │   │   └── NSWindowController+Action.m
│   │   │   ├── Macro/
│   │   │   │   ├── ColorConstant.h
│   │   │   │   ├── DefineConstant.h
│   │   │   │   └── NotifyConstant.h
│   │   │   └── TKPrefixHeader.pch
│   │   ├── Config/
│   │   │   ├── TKConstants.h
│   │   │   ├── TKWeChatPluginConfig.h
│   │   │   └── TKWeChatPluginConfig.m
│   │   ├── Hook/
│   │   │   ├── MMChatsTableCellView+hook.h
│   │   │   ├── MMChatsTableCellView+hook.m
│   │   │   ├── MMStickerMessageCellView+hook.h
│   │   │   ├── MMStickerMessageCellView+hook.m
│   │   │   ├── MMStickerPickerCell+hook.h
│   │   │   ├── MMStickerPickerCell+hook.m
│   │   │   ├── WeChat+hook.h
│   │   │   └── WeChat+hook.m
│   │   ├── Managers/
│   │   │   ├── TKAssistantMenuManager.h
│   │   │   ├── TKAssistantMenuManager.m
│   │   │   ├── TKCacheManager.h
│   │   │   ├── TKCacheManager.m
│   │   │   ├── TKEmoticonManager.h
│   │   │   ├── TKEmoticonManager.m
│   │   │   ├── TKHTTPManager.h
│   │   │   ├── TKHTTPManager.m
│   │   │   ├── TKMessageManager.h
│   │   │   ├── TKMessageManager.m
│   │   │   ├── TKRemoteControlCommands.plist
│   │   │   ├── TKRemoteControlManager.h
│   │   │   ├── TKRemoteControlManager.m
│   │   │   ├── TKVersionManager.h
│   │   │   ├── TKVersionManager.m
│   │   │   ├── TKWebServerManager.h
│   │   │   └── TKWebServerManager.m
│   │   ├── Models/
│   │   │   ├── TKAutoReplyModel.h
│   │   │   ├── TKAutoReplyModel.m
│   │   │   ├── TKBaseModel.h
│   │   │   ├── TKBaseModel.m
│   │   │   ├── TKIgnoreSessonModel.h
│   │   │   ├── TKIgnoreSessonModel.m
│   │   │   ├── TKRemoteControlModel.h
│   │   │   └── TKRemoteControlModel.m
│   │   ├── Utils/
│   │   │   ├── TKHelper.h
│   │   │   ├── TKHelper.m
│   │   │   ├── TKUtility.h
│   │   │   └── TKUtility.m
│   │   ├── Vendor/
│   │   │   ├── fishhook.c
│   │   │   └── fishhook.h
│   │   ├── Views/
│   │   │   ├── AutoReply/
│   │   │   │   ├── TKAutoReplyCell.h
│   │   │   │   ├── TKAutoReplyCell.m
│   │   │   │   ├── TKAutoReplyContentView.h
│   │   │   │   └── TKAutoReplyContentView.m
│   │   │   └── RemoteControl/
│   │   │       ├── TKRemoteControlCell.h
│   │   │       └── TKRemoteControlCell.m
│   │   └── WindowControllers/
│   │       ├── About/
│   │       │   ├── Base.lproj/
│   │       │   │   └── TKAboutWindowController.xib
│   │       │   ├── TKAboutWindowController.h
│   │       │   ├── TKAboutWindowController.m
│   │       │   ├── en.lproj/
│   │       │   │   └── TKAboutWindowController.xib
│   │       │   └── zh-Hant.lproj/
│   │       │       └── TKAboutWindowController.xib
│   │       ├── AutoReply/
│   │       │   ├── TKAutoReplyWindowController.h
│   │       │   ├── TKAutoReplyWindowController.m
│   │       │   └── TKAutoReplyWindowController.xib
│   │       ├── Download/
│   │       │   ├── TKDownloadWindowController.h
│   │       │   ├── TKDownloadWindowController.m
│   │       │   └── TKDownloadWindowController.xib
│   │       └── RemoteControl/
│   │           ├── Base.lproj/
│   │           │   └── TKRemoteControlWindowController.xib
│   │           ├── TKRemoteControlWindowController.h
│   │           ├── TKRemoteControlWindowController.m
│   │           ├── zh-Hans.lproj/
│   │           │   └── TKRemoteControlWindowController.xib
│   │           └── zh-Hant.lproj/
│   │               └── TKRemoteControlWindowController.xib
│   ├── TKRemoteControlScript.scpt
│   ├── WeChatPlugin.h
│   ├── en.lproj/
│   │   ├── Localizable.strings
│   │   └── about.rtfd/
│   │       └── TXT.rtf
│   ├── main.mm
│   ├── zh-Hans.lproj/
│   │   ├── Localizable.strings
│   │   └── about.rtfd/
│   │       └── TXT.rtf
│   └── zh-Hant.lproj/
│       ├── Localizable.strings
│       └── about.rtfd/
│           └── TXT.rtf
├── WeChatPlugin.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   └── contents.xcworkspacedata
│   └── xcuserdata/
│       └── TK.xcuserdatad/
│           ├── xcdebugger/
│           │   └── Breakpoints_v2.xcbkptlist
│           └── xcschemes/
│               ├── WeChatPlugin.xcscheme
│               └── xcschememanagement.plist
└── WeChatPlugin.xcworkspace/
    ├── contents.xcworkspacedata
    ├── xcshareddata/
    │   └── IDEWorkspaceChecks.plist
    └── xcuserdata/
        └── TK.xcuserdatad/
            ├── IDEFindNavigatorScopes.plist
            └── xcdebugger/
                └── Breakpoints_v2.xcbkptlist
Download .txt
SYMBOL INDEX (24 symbols across 4 files)

FILE: Other/UpdateRemoteControlCommandsPlist.py
  function ExportPlistToDict (line 14) | def ExportPlistToDict(plist, key):
  function SyncPlistContent (line 21) | def SyncPlistContent(remote_plist, local_plist, key):
  function main (line 35) | def main():

FILE: WeChatPlugin/Sources/Managers/TKVersionManager.h
  type TKVersionStatusOld (line 11) | typedef NS_ENUM(NSUInteger, TKVersionStatus) {

FILE: WeChatPlugin/Sources/Vendor/fishhook.c
  type mach_header_t (line 40) | typedef struct mach_header_64 mach_header_t;
  type segment_command_t (line 41) | typedef struct segment_command_64 segment_command_t;
  type section_t (line 42) | typedef struct section_64 section_t;
  type nlist_t (line 43) | typedef struct nlist_64 nlist_t;
  type mach_header_t (line 46) | typedef struct mach_header mach_header_t;
  type segment_command_t (line 47) | typedef struct segment_command segment_command_t;
  type section_t (line 48) | typedef struct section section_t;
  type nlist_t (line 49) | typedef struct nlist nlist_t;
  type rebindings_entry (line 57) | struct rebindings_entry {
  type rebindings_entry (line 63) | struct rebindings_entry
  function prepend_rebindings (line 65) | static int prepend_rebindings(struct rebindings_entry **rebindings_head,
  function get_protection (line 85) | static int get_protection(void *addr, vm_prot_t *prot, vm_prot_t *max_pr...
  function perform_rebinding_with_section (line 114) | static void perform_rebinding_with_section(struct rebindings_entry *rebi...
  function rebind_symbols_for_image (line 167) | static void rebind_symbols_for_image(struct rebindings_entry *rebindings,
  function _rebind_symbols_for_image (line 229) | static void _rebind_symbols_for_image(const struct mach_header *header,
  function rebind_symbols_image (line 234) | int rebind_symbols_image(void *header,
  function rebind_symbols (line 248) | int rebind_symbols(struct rebinding rebindings[], size_t rebindings_nel) {

FILE: WeChatPlugin/Sources/Vendor/fishhook.h
  type rebinding (line 44) | struct rebinding {
  type rebinding (line 59) | struct rebinding
  type rebinding (line 68) | struct rebinding
Condensed preview — 177 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (622K chars).
[
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "chars": 515,
    "preview": "<!--\n提 issue 前,请先完成以下四步:\n\n1. 确保微信小助手是最新版本,没有请更新.\n2. 请搜索下是否有人发了相同的 issue,可以的话请在相同的 issue 下描述自己的问题,避免 duplicate issue.\n3. "
  },
  {
    "path": ".gitignore",
    "chars": 68,
    "preview": "# Xcode\n#\n.DS_Store\n*.xcuserstate\n\n# CocoaPods\n#\nPods/\nPodfile.lock\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 2384,
    "preview": "# 更新日志 \n\n### [v2.0 (2023-03-12)](https://github.com/TKkk-iOSer/WeChatPlugin-MacOS/releases/tag/v2.)\n\n- 适配 3.7.0\n- 新增撤回消息"
  },
  {
    "path": "Install.md",
    "chars": 1565,
    "preview": "\n\n## Install\n\n**第一次安装需要输入密码,仅是为了获取写入微信文件夹的权限**\n\n**0. 懒癌版安装&升级**\n\n打开`应用程序-实用工具-Terminal(终端)`,执行下面的命令安装 [Oh My WeChat](htt"
  },
  {
    "path": "LICENSE",
    "chars": 1059,
    "preview": "MIT License\n\nCopyright (c) 2017 TK\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
  },
  {
    "path": "Other/Install.sh",
    "chars": 1146,
    "preview": "#!/bin/bash\n\nwechat_path=\"/Applications/WeChat.app\"\n\nif [ ! -d \"$wechat_path\" ]\nthen\nwechat_path=\"/Applications/微信.app\"\n"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Headers/WeChatPlugin.h",
    "chars": 19921,
    "preview": "//\n//  WeChatPlugin.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights reserved."
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Modules/module.modulemap",
    "chars": 105,
    "preview": "framework module WeChatPlugin {\n  umbrella header \"WeChatPlugin.h\"\n\n  export *\n  module * { export * }\n}\n"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Resources/Info.plist",
    "chars": 2058,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Resources/TKRemoteControlCommands.plist",
    "chars": 6924,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Resources/en.lproj/about.rtfd/TXT.rtf",
    "chars": 2802,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Resources/zh-Hans.lproj/about.rtfd/TXT.rtf",
    "chars": 10603,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Resources/zh-Hant.lproj/about.rtfd/TXT.rtf",
    "chars": 7493,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/A/Headers/WeChatPlugin.h",
    "chars": 19921,
    "preview": "//\n//  WeChatPlugin.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights reserved."
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/A/Modules/module.modulemap",
    "chars": 105,
    "preview": "framework module WeChatPlugin {\n  umbrella header \"WeChatPlugin.h\"\n\n  export *\n  module * { export * }\n}\n"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/A/Resources/Info.plist",
    "chars": 2058,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/A/Resources/TKRemoteControlCommands.plist",
    "chars": 6924,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/A/Resources/en.lproj/about.rtfd/TXT.rtf",
    "chars": 2802,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/A/Resources/zh-Hans.lproj/about.rtfd/TXT.rtf",
    "chars": 10603,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/A/Resources/zh-Hant.lproj/about.rtfd/TXT.rtf",
    "chars": 7493,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Headers/WeChatPlugin.h",
    "chars": 19921,
    "preview": "//\n//  WeChatPlugin.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights reserved."
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Modules/module.modulemap",
    "chars": 105,
    "preview": "framework module WeChatPlugin {\n  umbrella header \"WeChatPlugin.h\"\n\n  export *\n  module * { export * }\n}\n"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Resources/Info.plist",
    "chars": 2058,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Resources/TKRemoteControlCommands.plist",
    "chars": 6924,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Resources/en.lproj/about.rtfd/TXT.rtf",
    "chars": 2802,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Resources/zh-Hans.lproj/about.rtfd/TXT.rtf",
    "chars": 10603,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "Other/Products/Debug/WeChatPlugin.framework/Versions/Current/Resources/zh-Hant.lproj/about.rtfd/TXT.rtf",
    "chars": 7493,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "Other/Uninstall.sh",
    "chars": 884,
    "preview": "# !/bin/bash\n\nwechat_path=\"/Applications/WeChat.app\"\n\nif [ ! -d \"$wechat_path\" ]\nthen\nwechat_path=\"/Applications/微信.app\""
  },
  {
    "path": "Other/Update.sh",
    "chars": 884,
    "preview": "#!/bin/bash\n\napp_name=\"WeChat\"\nshell_path=\"$(dirname \"$0\")\"\nwechat_path=\"/Applications/WeChat.app\"\nframework_name=\"WeCha"
  },
  {
    "path": "Other/UpdateRemoteControlCommandsPlist.py",
    "chars": 1715,
    "preview": "#! /usr/bin/env python\n# -*- coding: utf-8 -*-\n\n\"\"\"\nu为老用户自动同步新的plist,不改变已有的entry设置.\n\"\"\"\n\nimport sys, os\nimport plistlib\n"
  },
  {
    "path": "Podfile",
    "chars": 108,
    "preview": "platform :osx, '10.12'\ninhibit_all_warnings!\n\ntarget 'WeChatPlugin' do\n  pod 'GCDWebServer', '~> 3.4.2'\nend\n"
  },
  {
    "path": "Q&A.md",
    "chars": 1367,
    "preview": "## 常见问题解决方法:\n\n##### 0. 开场:   \n由于微信每次更新都会更新一些方法,因此建议可以先备份当前可用的微信.app(~~其实我是不太建议更新的~~),这样避免微信更新之后,小助手部分功能失效或者闪退。\n\n---\n\n###"
  },
  {
    "path": "README.md",
    "chars": 6287,
    "preview": "\n\n![微信小助手.png](./Other/ScreenShots/wechatplugin.png)\n\n![platform](https://img.shields.io/badge/platform-macos-lightgrey."
  },
  {
    "path": "README_EN.md",
    "chars": 3815,
    "preview": "\n\n![wechat assistant.png](./Other/ScreenShots/en/wechatplugin.png)\n\n![platform](https://img.shields.io/badge/platform-ma"
  },
  {
    "path": "WeChatPlugin/Info.plist",
    "chars": 1543,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSButton+Action.h",
    "chars": 373,
    "preview": "//\n//  NSButton+Action.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/9/19.\n//  Copyright © 2017年 tk. All rights reserv"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSButton+Action.m",
    "chars": 739,
    "preview": "//\n//  NSButton+Action.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/9/19.\n//  Copyright © 2017年 tk. All rights reserv"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSDate+Action.h",
    "chars": 233,
    "preview": "//\n//  NSDate+Action.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/7/25.\n//  Copyright © 2018年 tk. All rights reserved"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSDate+Action.m",
    "chars": 1196,
    "preview": "//\n//  NSDate+Action.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/7/25.\n//  Copyright © 2018年 tk. All rights reserved"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSMenu+Action.h",
    "chars": 223,
    "preview": "//\n//  NSMenu+Action.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/15.\n//  Copyright © 2018年 tk. All rights reserved"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSMenu+Action.m",
    "chars": 407,
    "preview": "//\n//  NSMenu+Action.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/15.\n//  Copyright © 2018年 tk. All rights reserved"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSMenuItem+Action.h",
    "chars": 348,
    "preview": "//\n//  NSMenuItem+Action.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/25.\n//  Copyright © 2018年 tk. All rights rese"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSMenuItem+Action.m",
    "chars": 527,
    "preview": "//\n//  NSMenuItem+Action.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/25.\n//  Copyright © 2018年 tk. All rights rese"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSString+Action.h",
    "chars": 471,
    "preview": "//\n//  NSString+Action.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/5/1.\n//  Copyright © 2018年 tk. All rights reserve"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSString+Action.m",
    "chars": 1340,
    "preview": "//\n//  NSString+Action.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/5/1.\n//  Copyright © 2018年 tk. All rights reserve"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSTextField+Action.h",
    "chars": 255,
    "preview": "//\n//  NSTextField+Action.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/9/19.\n//  Copyright © 2017年 tk. All rights res"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSTextField+Action.m",
    "chars": 652,
    "preview": "//\n//  NSTextField+Action.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/9/19.\n//  Copyright © 2017年 tk. All rights res"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSView+Action.h",
    "chars": 473,
    "preview": "//\n//  NSView+Action.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/20.\n//  Copyright © 2017年 tk. All rights reserved"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSView+Action.m",
    "chars": 1303,
    "preview": "//\n//  NSView+Action.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/20.\n//  Copyright © 2017年 tk. All rights reserved"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSWindowController+Action.h",
    "chars": 222,
    "preview": "//\n//  NSWindowController+Action.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/5/4.\n//  Copyright © 2018年 tk. All righ"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Category/NSWindowController+Action.m",
    "chars": 331,
    "preview": "//\n//  NSWindowController+Action.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/5/4.\n//  Copyright © 2018年 tk. All righ"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Macro/ColorConstant.h",
    "chars": 534,
    "preview": "//\n//  Color.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/20.\n//  Copyright © 2017年 tk. All rights reserved.\n//\n\n#i"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Macro/DefineConstant.h",
    "chars": 446,
    "preview": "//\n//  DefineConstant.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/14.\n//  Copyright © 2018年 tk. All rights reserve"
  },
  {
    "path": "WeChatPlugin/Sources/Common/Macro/NotifyConstant.h",
    "chars": 500,
    "preview": "\n//\n//  NotifyConstant.h.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/23.\n//  Copyright © 2018年 tk. All rights rese"
  },
  {
    "path": "WeChatPlugin/Sources/Common/TKPrefixHeader.pch",
    "chars": 570,
    "preview": "//\n//  TKPrefixHeader.pch\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/20.\n//  Copyright © 2017年 tk. All rights reser"
  },
  {
    "path": "WeChatPlugin/Sources/Config/TKConstants.h",
    "chars": 497,
    "preview": "//\n//  TKConstants.h\n//  WeChatPlugin\n//\n//  Created by TK on 2020/3/14.\n//  Copyright © 2020 tk. All rights reserved.\n/"
  },
  {
    "path": "WeChatPlugin/Sources/Config/TKWeChatPluginConfig.h",
    "chars": 2439,
    "preview": "//\n//  TKWeChatPluginConfig.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights r"
  },
  {
    "path": "WeChatPlugin/Sources/Config/TKWeChatPluginConfig.m",
    "chars": 13976,
    "preview": "//\n//  TKWeChatPluginConfig.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights r"
  },
  {
    "path": "WeChatPlugin/Sources/Hook/MMChatsTableCellView+hook.h",
    "chars": 251,
    "preview": "//\n//  MMChatsTableCellView+hook.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/9/15.\n//  Copyright © 2017年 tk. All rig"
  },
  {
    "path": "WeChatPlugin/Sources/Hook/MMChatsTableCellView+hook.m",
    "chars": 9045,
    "preview": "//\n//  MMChatsTableCellView+hook.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/9/15.\n//  Copyright © 2017年 tk. All rig"
  },
  {
    "path": "WeChatPlugin/Sources/Hook/MMStickerMessageCellView+hook.h",
    "chars": 259,
    "preview": "//\n//  MMStickerMessageCellView+hook.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/2/23.\n//  Copyright © 2018年 tk. All"
  },
  {
    "path": "WeChatPlugin/Sources/Hook/MMStickerMessageCellView+hook.m",
    "chars": 2281,
    "preview": "//\n//  MMStickerMessageCellView+hook.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/2/23.\n//  Copyright © 2018年 tk. All"
  },
  {
    "path": "WeChatPlugin/Sources/Hook/MMStickerPickerCell+hook.h",
    "chars": 303,
    "preview": "//\n//  NSObject+MMStickerPickerCell.h\n//  WeChatPlugin\n//\n//  Created by TK on 2019/3/13.\n//  Copyright © 2019 tk. All r"
  },
  {
    "path": "WeChatPlugin/Sources/Hook/MMStickerPickerCell+hook.m",
    "chars": 2358,
    "preview": "//\n//  NSObject+MMStickerPickerCell.m\n//  WeChatPlugin\n//\n//  Created by TK on 2019/3/13.\n//  Copyright © 2019 tk. All r"
  },
  {
    "path": "WeChatPlugin/Sources/Hook/WeChat+hook.h",
    "chars": 209,
    "preview": "//\n//  WeChat+hook.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights reserved.\n"
  },
  {
    "path": "WeChatPlugin/Sources/Hook/WeChat+hook.m",
    "chars": 33730,
    "preview": "//\n//  WeChat+hook.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights reserved.\n"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKAssistantMenuManager.h",
    "chars": 284,
    "preview": "//\n//  TKAssistantMenuManager.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/24.\n//  Copyright © 2018年 tk. All rights"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKAssistantMenuManager.m",
    "chars": 15506,
    "preview": "//\n//  TKAssistantMenuManager.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/24.\n//  Copyright © 2018年 tk. All rights"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKCacheManager.h",
    "chars": 462,
    "preview": "//\n//  TKCacheManager.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/8/3.\n//  Copyright © 2018年 tk. All rights reserved"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKCacheManager.m",
    "chars": 6165,
    "preview": "//\n//  TKCacheManager.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/8/3.\n//  Copyright © 2018年 tk. All rights reserved"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKEmoticonManager.h",
    "chars": 413,
    "preview": "//\n//  TKEmoticonManager.h\n//  WeChatPlugin\n//\n//  Created by TK on 2019/3/13.\n//  Copyright © 2019 tk. All rights reser"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKEmoticonManager.m",
    "chars": 3676,
    "preview": "//\n//  TKEmoticonManager.m\n//  WeChatPlugin\n//\n//  Created by TK on 2019/3/13.\n//  Copyright © 2019 tk. All rights reser"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKHTTPManager.h",
    "chars": 581,
    "preview": "//\n//  TKHTTPManager.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/17.\n//  Copyright © 2018年 tk. All rights reserved"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKHTTPManager.m",
    "chars": 2601,
    "preview": "//\n//  TKHTTPManager.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/17.\n//  Copyright © 2018年 tk. All rights reserved"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKMessageManager.h",
    "chars": 630,
    "preview": "//\n//  TKMessageManager.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/23.\n//  Copyright © 2018年 tk. All rights reser"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKMessageManager.m",
    "chars": 5211,
    "preview": "//\n//  TKMessageManager.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/23.\n//  Copyright © 2018年 tk. All rights reser"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKRemoteControlCommands.plist",
    "chars": 6924,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKRemoteControlManager.h",
    "chars": 498,
    "preview": "//\n//  TKRemoteControlManager.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/24.\n//  Copyright © 2018年 tk. All rights"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKRemoteControlManager.m",
    "chars": 8388,
    "preview": "//\n//  TKRemoteControlManager.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/24.\n//  Copyright © 2018年 tk. All rights"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKVersionManager.h",
    "chars": 624,
    "preview": "//\n//  TKVersionManager.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/2/24.\n//  Copyright © 2018年 tk. All rights reser"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKVersionManager.m",
    "chars": 2934,
    "preview": "//\n//  TKVersionManager.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/2/24.\n//  Copyright © 2018年 tk. All rights reser"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKWebServerManager.h",
    "chars": 285,
    "preview": "//\n//  TKWebServerManager.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/3/18.\n//  Copyright © 2018年 tk. All rights res"
  },
  {
    "path": "WeChatPlugin/Sources/Managers/TKWebServerManager.m",
    "chars": 25361,
    "preview": "//\n//  TKWebServerManager.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/3/18.\n//  Copyright © 2018年 tk. All rights res"
  },
  {
    "path": "WeChatPlugin/Sources/Models/TKAutoReplyModel.h",
    "chars": 1086,
    "preview": "//\n//  TKAutoReplyModel.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/18.\n//  Copyright © 2017年 tk. All rights reser"
  },
  {
    "path": "WeChatPlugin/Sources/Models/TKAutoReplyModel.m",
    "chars": 1839,
    "preview": "//\n//  TKAutoReplyModel.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/18.\n//  Copyright © 2017年 tk. All rights reser"
  },
  {
    "path": "WeChatPlugin/Sources/Models/TKBaseModel.h",
    "chars": 281,
    "preview": "//\n//  TKBaseModel.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/9/17.\n//  Copyright © 2017年 tk. All rights reserved.\n"
  },
  {
    "path": "WeChatPlugin/Sources/Models/TKBaseModel.m",
    "chars": 452,
    "preview": "//\n//  TKBaseModel.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/9/17.\n//  Copyright © 2017年 tk. All rights reserved.\n"
  },
  {
    "path": "WeChatPlugin/Sources/Models/TKIgnoreSessonModel.h",
    "chars": 351,
    "preview": "//\n//  TKIgnoreSessonModel.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/9/15.\n//  Copyright © 2017年 tk. All rights re"
  },
  {
    "path": "WeChatPlugin/Sources/Models/TKIgnoreSessonModel.m",
    "chars": 632,
    "preview": "//\n//  TKIgnoreSessonModel.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/9/15.\n//  Copyright © 2017年 tk. All rights re"
  },
  {
    "path": "WeChatPlugin/Sources/Models/TKRemoteControlModel.h",
    "chars": 609,
    "preview": "//\n//  TKRemoteControlModel.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/8.\n//  Copyright © 2017年 tk. All rights re"
  },
  {
    "path": "WeChatPlugin/Sources/Models/TKRemoteControlModel.m",
    "chars": 812,
    "preview": "//\n//  TKRemoteControlModel.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/8.\n//  Copyright © 2017年 tk. All rights re"
  },
  {
    "path": "WeChatPlugin/Sources/Utils/TKHelper.h",
    "chars": 705,
    "preview": "//\n//  TKHelper.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights reserved.\n//\n"
  },
  {
    "path": "WeChatPlugin/Sources/Utils/TKHelper.m",
    "chars": 1248,
    "preview": "//\n//  TKHelper.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights reserved.\n//\n"
  },
  {
    "path": "WeChatPlugin/Sources/Utils/TKUtility.h",
    "chars": 569,
    "preview": "//\n//  TKUtility.h\n//  WeChatPlugin\n//\n//  Created by TK on 2019/1/12.\n//  Copyright © 2019 tk. All rights reserved.\n//\n"
  },
  {
    "path": "WeChatPlugin/Sources/Utils/TKUtility.m",
    "chars": 2818,
    "preview": "//\n//  TKUtility.m\n//  WeChatPlugin\n//\n//  Created by TK on 2019/1/12.\n//  Copyright © 2019 tk. All rights reserved.\n//\n"
  },
  {
    "path": "WeChatPlugin/Sources/Vendor/fishhook.c",
    "chars": 10452,
    "preview": "// Copyright (c) 2013, Facebook, Inc.\n// All rights reserved.\n// Redistribution and use in source and binary forms, with"
  },
  {
    "path": "WeChatPlugin/Sources/Vendor/fishhook.h",
    "chars": 3059,
    "preview": "// Copyright (c) 2013, Facebook, Inc.\n// All rights reserved.\n// Redistribution and use in source and binary forms, with"
  },
  {
    "path": "WeChatPlugin/Sources/Views/AutoReply/TKAutoReplyCell.h",
    "chars": 338,
    "preview": "//\n//  TKAutoReplyCell.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/21.\n//  Copyright © 2017年 tk. All rights reserv"
  },
  {
    "path": "WeChatPlugin/Sources/Views/AutoReply/TKAutoReplyCell.m",
    "chars": 2623,
    "preview": "//\n//  TKAutoReplyCell.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/21.\n//  Copyright © 2017年 tk. All rights reserv"
  },
  {
    "path": "WeChatPlugin/Sources/Views/AutoReply/TKAutoReplyContentView.h",
    "chars": 345,
    "preview": "//\n//  TKAutoReplyContentView.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/20.\n//  Copyright © 2017年 tk. All rights"
  },
  {
    "path": "WeChatPlugin/Sources/Views/AutoReply/TKAutoReplyContentView.m",
    "chars": 9665,
    "preview": "//\n//  TKAutoReplyContentView.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/20.\n//  Copyright © 2017年 tk. All rights"
  },
  {
    "path": "WeChatPlugin/Sources/Views/RemoteControl/TKRemoteControlCell.h",
    "chars": 235,
    "preview": "//\n//  TKRemoteControlCell.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/8.\n//  Copyright © 2017年 tk. All rights res"
  },
  {
    "path": "WeChatPlugin/Sources/Views/RemoteControl/TKRemoteControlCell.m",
    "chars": 1807,
    "preview": "//\n//  TKRemoteControlCell.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/8.\n//  Copyright © 2017年 tk. All rights res"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/About/Base.lproj/TKAboutWindowController.xib",
    "chars": 7692,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/About/TKAboutWindowController.h",
    "chars": 222,
    "preview": "//\n//  TKAboutWindowController.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/5/4.\n//  Copyright © 2018年 tk. All rights"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/About/TKAboutWindowController.m",
    "chars": 890,
    "preview": "//\n//  TKAboutWindowController.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/5/4.\n//  Copyright © 2018年 tk. All rights"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/About/en.lproj/TKAboutWindowController.xib",
    "chars": 7706,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/About/zh-Hant.lproj/TKAboutWindowController.xib",
    "chars": 7692,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/AutoReply/TKAutoReplyWindowController.h",
    "chars": 314,
    "preview": "//\n//  TKAutoReplyWindowController.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All r"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/AutoReply/TKAutoReplyWindowController.m",
    "chars": 9310,
    "preview": "//\n//  TKAutoReplyWindowController.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All r"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/AutoReply/TKAutoReplyWindowController.xib",
    "chars": 2007,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/Download/TKDownloadWindowController.h",
    "chars": 272,
    "preview": "//\n//  TKDownloadWindowController.h\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/28.\n//  Copyright © 2018年 tk. All ri"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/Download/TKDownloadWindowController.m",
    "chars": 4561,
    "preview": "//\n//  TKDownloadWindowController.m\n//  WeChatPlugin\n//\n//  Created by TK on 2018/4/28.\n//  Copyright © 2018年 tk. All ri"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/Download/TKDownloadWindowController.xib",
    "chars": 5459,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/RemoteControl/Base.lproj/TKRemoteControlWindowController.xib",
    "chars": 8963,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/RemoteControl/TKRemoteControlWindowController.h",
    "chars": 238,
    "preview": "//\n//  TKRemoteControlWindowController.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/8.\n//  Copyright © 2017年 tk. Al"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/RemoteControl/TKRemoteControlWindowController.m",
    "chars": 3211,
    "preview": "//\n//  TKRemoteControlWindowController.m\n//  WeChatPlugin\n//\n//  Created by TK on 2017/8/8.\n//  Copyright © 2017年 tk. Al"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/RemoteControl/zh-Hans.lproj/TKRemoteControlWindowController.xib",
    "chars": 8833,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion"
  },
  {
    "path": "WeChatPlugin/Sources/WindowControllers/RemoteControl/zh-Hant.lproj/TKRemoteControlWindowController.xib",
    "chars": 8833,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion"
  },
  {
    "path": "WeChatPlugin/WeChatPlugin.h",
    "chars": 19921,
    "preview": "//\n//  WeChatPlugin.h\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights reserved."
  },
  {
    "path": "WeChatPlugin/en.lproj/Localizable.strings",
    "chars": 5787,
    "preview": "/*\n Localizable.strings\n WeChatPlugin\n \n Created by TK on 2018/4/14.\n Copyright © 2018年 tk. All rights reserved.\n */\n\n\n/"
  },
  {
    "path": "WeChatPlugin/en.lproj/about.rtfd/TXT.rtf",
    "chars": 2802,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "WeChatPlugin/main.mm",
    "chars": 566,
    "preview": "//\n//  main.c\n//  WeChatPlugin\n//\n//  Created by TK on 2017/4/19.\n//  Copyright © 2017年 tk. All rights reserved.\n//\n\n#im"
  },
  {
    "path": "WeChatPlugin/zh-Hans.lproj/Localizable.strings",
    "chars": 4840,
    "preview": "/* \n  Localizable.strings\n  WeChatPlugin\n\n  Created by TK on 2018/4/14.\n  Copyright © 2018年 tk. All rights reserved.\n*/\n"
  },
  {
    "path": "WeChatPlugin/zh-Hans.lproj/about.rtfd/TXT.rtf",
    "chars": 10603,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "WeChatPlugin/zh-Hant.lproj/Localizable.strings",
    "chars": 4837,
    "preview": "/*\n Localizable.strings\n WeChatPlugin\n \n Created by TK on 2018/4/14.\n Copyright © 2018年 tk. All rights reserved.\n */\n\n\n/"
  },
  {
    "path": "WeChatPlugin/zh-Hant.lproj/about.rtfd/TXT.rtf",
    "chars": 7493,
    "preview": "{\\rtf1\\ansi\\ansicpg936\\cocoartf1671\n{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue-Light;\\f1\\fnil\\fcharset0 HelveticaNeue;\\f2"
  },
  {
    "path": "WeChatPlugin.xcodeproj/project.pbxproj",
    "chars": 60414,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "WeChatPlugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 157,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:WeChatPlugin.xc"
  },
  {
    "path": "WeChatPlugin.xcodeproj/xcuserdata/TK.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
    "chars": 91,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n   type = \"1\"\n   version = \"2.0\">\n</Bucket>\n"
  },
  {
    "path": "WeChatPlugin.xcodeproj/xcuserdata/TK.xcuserdatad/xcschemes/WeChatPlugin.xcscheme",
    "chars": 3074,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0930\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "WeChatPlugin.xcodeproj/xcuserdata/TK.xcuserdatad/xcschemes/xcschememanagement.plist",
    "chars": 484,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "WeChatPlugin.xcworkspace/contents.xcworkspacedata",
    "chars": 230,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:WeChatPlugin.x"
  },
  {
    "path": "WeChatPlugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "WeChatPlugin.xcworkspace/xcuserdata/TK.xcuserdatad/IDEFindNavigatorScopes.plist",
    "chars": 182,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "WeChatPlugin.xcworkspace/xcuserdata/TK.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
    "chars": 2637,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n   uuid = \"6CFB7591-92E2-4372-82DC-C754B29D6A07\"\n   type = \"0\"\n   version"
  }
]

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

About this extraction

This page contains the full source code of the TKkk-iOSer/WeChatPlugin-MacOS GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 177 files (557.2 KB), approximately 182.1k tokens, and a symbol index with 24 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!