Demo entry 6645679

vwen_1.4.5_1.4.4_diff

   

Submitted by anonymous on Oct 11, 2017 at 09:06
Language: Objective-C. Code size: 683.2 kB.

diff --git a/ivwen/AppDelegate/AppDelegate.m b/ivwen/AppDelegate/AppDelegate.m
index 116dc301..5d85e198 100644
--- a/ivwen/AppDelegate/AppDelegate.m
+++ b/ivwen/AppDelegate/AppDelegate.m
@@ -15,8 +15,6 @@
 #import <AVFoundation/AVFoundation.h>
 #import "WXApi.h"
 #import "WeiboSDK.h"
-#import "MobClick.h"
-#import "UMessage.h"
 #import "RcmdManager.h"
 #import "ArticleManager.h"
 #import "Constants.h"
@@ -63,9 +61,25 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
 {
      MPLog(@"sharesdk版本号:%@",[ShareSDK sdkVer]);
     
+    
+    
+    NSString *passWord =  [SFHFKeychainUtils getPasswordForUsername:@"AppUUID"
+                                                     andServiceName:@"com.lanjingren.ivwen"
+                                                              error:nil];
+    
+    if (passWord == nil || passWord.length == 0) {
+        [SFHFKeychainUtils storeUsername:@"AppUUID"
+                             andPassword:[Utils uuid]
+                          forServiceName:@"com.lanjingren.ivwen"
+                          updateExisting:1
+                                   error:nil];
+    }
+    
+    [self addUserAgent];
+    
     //审核时候的赞赏
     [[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithInteger:1] forKey:MP_ISHIDEN_APPRECIATE];
-
+    
     [[NSUserDefaults standardUserDefaults] synchronize];
 
     // 诸葛IO
@@ -98,43 +112,13 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
         // ShareSDK
         [self ShareLaunchOption:launchOptions];
         
-        // 友盟统计组件
-        [MobClick startWithAppkey:@"552ad147fd98c5d8a10007d3" reportPolicy:BATCH channelId:@""];
-        [MobClick updateOnlineConfig];
-        
-        // 友盟消息通知组件
-        [UMessage startWithAppkey:@"552ad147fd98c5d8a10007d3" launchOptions:launchOptions];
-        [UMessage setLogEnabled:NO];
+        UMConfigInstance.appKey = @"552ad147fd98c5d8a10007d3";
         
+        [MobClick startWithConfigure:UMConfigInstance];
     });
     
     [self appLaunchSetLocation];
     
-       if (IOS_8_OR_LATER)
-    {
-        //register remoteNotification types
-        UIMutableUserNotificationAction *action1 = [[UIMutableUserNotificationAction alloc] init];
-        action1.identifier = @"action1_identifier";
-        action1.title=@"Accept";
-        action1.activationMode = UIUserNotificationActivationModeForeground;//当点击的时候启动程序
-        
-        UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init];  //第二按钮
-        action2.identifier = @"action2_identifier";
-        action2.title=@"Reject";
-        action2.activationMode = UIUserNotificationActivationModeBackground;//当点击的时候不启动程序,在后台处理
-        action2.authenticationRequired = YES;//需要解锁才能处理,如果action.activationMode = UIUserNotificationActivationModeForeground;则这个属性被忽略;
-        action2.destructive = YES;
-        
-        UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];
-        categorys.identifier = @"category1";//这组动作的唯一标示
-        [categorys setActions:@[action1,action2] forContext:(UIUserNotificationActionContextDefault)];
-        
-        UIUserNotificationSettings *userSettings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:[NSSet setWithObject:categorys]];
-        
-        [UMessage registerRemoteNotificationAndUserNotificationSettings:userSettings];
-    }
-    
-    
     if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)])
     {
         UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
@@ -196,9 +180,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
     
     [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
     [timer fire];
-    
-    [self addUserAgent];
-    
+
     [self autoCleanDisk];
     
     [self gotoBWindow];
@@ -211,13 +193,107 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
         [[AppManager sharedManager].reachability startNotifier];
     });
     
-//    [[NetManager sharedManager] IAPreceiptVertificate:@"" productId:@"" block:^(ReceiptVertificateResp *resp) {
-//        
-//    }];
+    // 每次启动,校验本地的票据缓存,如果有失败的票据,则启动自动帮用户向apple校验
+    NSFileManager *fileManager = [NSFileManager defaultManager];
+    
+    //从服务器验证receipt失败之后,在程序再次启动的时候,使用保存的receipt再次到服务器验证
+    if (![fileManager fileExistsAtPath:AppStoreInfoLocalFilePath]) {//如果在改路下不存在文件,说明就没有保存验证失败后的购买凭证,也就是说发送凭证成功。
+        [fileManager createDirectoryAtPath:AppStoreInfoLocalFilePath//创建目录
+               withIntermediateDirectories:YES
+                                attributes:nil
+                                     error:nil];
+    }
+    else//存在购买凭证,说明发送凭证失败,再次发起验证
+    {
+        [self sendFailedIapFiles];
+    }
+
+    
+    [AppManager sharedManager].actived_seconds = [[NSDate date] timeIntervalSince1970];
+    
+    //上报:第一次安装启动
+    if (![[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:@"%@",@"FirstInstallation"]]) {
+        [[NetManager sharedManager] clientReport:@"client_add" params:nil content:@{@"uuid":[Utils getAPPOnlyUUID],@"idfa":[Utils getIDFA]} block:^(SimpleResp *resp) {
+            
+            if (resp.code == ERROR_OK) {
+                [[NSUserDefaults standardUserDefaults] setBool:YES forKey:[NSString stringWithFormat:@"%@",@"FirstInstallation"]];
+                
+                [[NSUserDefaults standardUserDefaults] synchronize];
+            }
+            
+        }];
+    }
+    //上报:每次启动APP
+    [[NetManager sharedManager] clientReport:@"client_active" params:nil content:@{@"user_id":[UserManager sharedManager].userID,@"uuid":[Utils getAPPOnlyUUID],@"idfa":[Utils getIDFA]} block:^(SimpleResp *resp) {
+
+        
+    }];
     
     return YES;
 }
 
+// 验证receipt失败,App启动后再次验证
+- (void)sendFailedIapFiles
+{
+    NSFileManager *fileManager = [NSFileManager defaultManager];
+    NSError *error = nil;
+    
+    //搜索该目录下的所有文件和目录
+    NSArray *cacheFileNameArray = [fileManager contentsOfDirectoryAtPath:AppStoreInfoLocalFilePath error:&error];
+    
+    
+    if (error == nil)
+    {
+        for (NSString *name in cacheFileNameArray)
+        {
+            if ([name hasSuffix:@".plist"])//如果有plist后缀的文件,说明就是存储的购买凭证
+            {
+                NSString *filePath = [NSString stringWithFormat:@"%@/%@", AppStoreInfoLocalFilePath, name];
+                
+                [self sendAppStoreRequestBuyPlist:filePath];
+            }
+            else
+            {
+                MPLog(@"AppStoreInfoLocalFilePath error:%@", [error domain]);
+            }
+        }
+    }
+}
+
+- (void)sendAppStoreRequestBuyPlist:(NSString *)plistPath
+{
+    NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:plistPath];
+    
+    //这里的参数请根据自己公司后台服务器接口定制,但是必须发送的是持久化保存购买凭证
+    //    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
+    //                                   [dic valueForKey:@"receipt_userId"],                    @"receipt_userId",
+    //                                   [dic valueForKey:@"receiptDate"],                       @"receiptDate",
+    //                                   [dic valueForKey:@"Request_transactionReceipt"],        @"Request_transactionReceipt",
+    //                                   nil];
+    
+    if ([[dic stringValueForKey:@"Request_transactionReceipt"] isEqualToString:@""] || [[dic stringValueForKey:@"receipt_TradeNo"] isEqualToString:@""] || [[dic stringValueForKey:@"receipt_userId"] isEqualToString:@""]) {
+        return;
+    }
+    
+    [[NetManager sharedManager] IAPreceiptVertificate:[dic stringValueForKey:@"Request_transactionReceipt"] tradeNo:[dic stringValueForKey:@"receipt_TradeNo"] rewardedUserId:[dic stringValueForKey:@"receipt_userId"] block:^(ReceiptVertificateResp *resp) {
+
+        if (resp.code == ERROR_OK || resp.code == 1059) {
+            [self sendAppStoreRequestSucceededWithData];
+        }
+    }];
+    
+}
+
+//验证成功就从plist中移除凭证
+-(void)sendAppStoreRequestSucceededWithData
+{
+    NSFileManager *fileManager = [NSFileManager defaultManager];
+    if ([fileManager fileExistsAtPath:AppStoreInfoLocalFilePath])
+    {
+        [fileManager removeItemAtPath:AppStoreInfoLocalFilePath error:nil];
+    }
+}
+
 //定时获取公告信息和模板文件
 - (void)refreshBulletin
 {
@@ -338,6 +414,7 @@ - (void)addUserAgent
 {
     UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
     NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
+    [AppManager sharedManager].httpUA = userAgent;
     NSString *newUserAgent = [userAgent stringByAppendingString:[NSString stringWithFormat:@" ios/%@",MP_APP_VERSION]];//自定义需要拼接的字符串
     NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil];
     [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
@@ -473,15 +550,14 @@ - (void)getLaunchAD
              [UserManager sharedManager].adDisplayTime = resp.displayTime;
              [UserManager sharedManager].adImageURL = resp.imgURL;
              [UserManager sharedManager].adLinkURL = resp.linkURL;
+             [UserManager sharedManager].pmArray = resp.pmArray;
+             [UserManager sharedManager].cmArray = resp.cmArray;
          }
      }];
 }
 
 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
 {
-//    [UMessage registerDeviceToken:deviceToken];
-//    [UMessage addAlias:[UMFeedback uuid] type:[UMFeedback messageType] response:nil];
-    
     NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
     token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
     MPLog(@"\n>>>[DeviceToken Success]:%@\n\n", token);
@@ -506,9 +582,6 @@ - (void)application:(UIApplication *)application performFetchWithCompletionHandl
 // 应用在后台时,用户点击通知栏查看推送消息时,走的方法是:
 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler
 {
-    //    [UMessage didReceiveRemoteNotification:userInfo];
-    //    [UMFeedback didReceiveRemoteNotification:userInfo];
-    
     [[UIApplication sharedApplication] cancelAllLocalNotifications];
     
     if ([UIApplication sharedApplication].applicationState == UIApplicationStateInactive ) {
@@ -650,25 +723,6 @@ - (void)easemobApplication:(UIApplication *)application
 /** SDK收到透传消息回调 */
 - (void)GeTuiSdkDidReceivePayloadData:(NSData *)payloadData andTaskId:(NSString *)taskId andMsgId:(NSString *)msgId andOffLine:(BOOL)offLine fromGtAppId:(NSString *)appId {
     
-//    MPLog(@"getuiTaskId:%@",taskId);
-//    
-//    // 收到个推消息
-//    NSString *payloadMsg = nil;
-//    NSDictionary * dic;
-//    if (payloadData) {
-//        
-//        payloadMsg = [[NSString alloc] initWithBytes:payloadData.bytes
-//                                              length:payloadData.length
-//                                            encoding:NSUTF8StringEncoding];
-//        
-//        dic = (NSDictionary *)[Utils jsonStringToObj:payloadMsg];
-//    }
-//    
-//    // 点击消息进入应用
-//    if (offLine) {
-//        
-//       // [[NSNotificationCenter defaultCenter] postNotificationName:@"didReceiveRemoteNotification" object:dic];
-//    }
 }
 
 /** SDK启动成功返回cid */
@@ -765,7 +819,31 @@ - (void)applicationWillResignActive:(UIApplication *)application
 
 - (void)applicationDidEnterBackground:(UIApplication *)application
 {
-//    [[EMClient sharedClient] applicationDidEnterBackground:application];
+    //上报:每次切换到后台
+    NSInteger thedate = [[NSDate date] timeIntervalSince1970] - [AppManager sharedManager].actived_seconds;
+    
+    [[NetManager sharedManager] clientReport:@"client_inactive" params:nil content:@{@"user_id":[UserManager sharedManager].userID,@"uuid":[Utils getAPPOnlyUUID],@"idfa":[Utils getIDFA],@"actived_seconds":[NSNumber numberWithInteger:thedate]} block:^(SimpleResp *resp) {
+        
+        [AppManager sharedManager].actived_seconds = [[NSDate date] timeIntervalSince1970];
+    }];
+    
+    [AppManager sharedManager].appInBack = YES;
+    
+//    [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^(){
+//        //上报:程序在10分钟内未被系统关闭或者强制关闭,则程序会调用此代码块,可以在这里做一些保存或者清理工作
+//        NSInteger thedate = [[NSDate date] timeIntervalSince1970] - [AppManager sharedManager].actived_seconds;
+//        
+//        [AppManager sharedManager].actived_seconds = [[NSDate date] timeIntervalSince1970];
+//        
+//        [[NetManager sharedManager] clientReport:@"client_inactive" params:nil content:@{@"user_id":[UserManager sharedManager].userID,@"uuid":[Utils getAPPOnlyUUID],@"idfa":[Utils getIDFA],@"actived_seconds":[NSNumber numberWithInteger:thedate]} block:^(SimpleResp *resp) {
+//            
+//            
+//        }];
+//    }];
+    
+    if ([ChatDemoHelper shareHelper].mainVC.timerNotice) {
+        [[ChatDemoHelper shareHelper].mainVC.timerNotice setFireDate:[NSDate distantFuture]];
+    }
 }
 
 - (void)applicationWillEnterForeground:(UIApplication *)application
@@ -795,23 +873,41 @@ - (void)applicationWillEnterForeground:(UIApplication *)application
         [updateView showInView:self.window animated:YES];
     }
     
+    [AppManager sharedManager].appInBack = NO;
+    
+    [AppManager sharedManager].actived_seconds = [[NSDate date] timeIntervalSince1970];
+    
+    //上报:每次打开app、从后台切换到前台时,上报数据
+    [[NetManager sharedManager] clientReport:@"client_active" params:nil content:@{@"user_id":[UserManager sharedManager].userID,@"uuid":[Utils getAPPOnlyUUID],@"idfa":[Utils getIDFA]} block:^(SimpleResp *resp) {
+        
+        
+    }];
     
-    // 每次打开app、从后台切换到前台时,上报数据
-    [[NetManager sharedManager] video_play:@"client_active" content:@{@"user_id":[UserManager sharedManager].userID,
-                                                                      @"uuid":[Utils uuid],
-                                                                      @"idfa":[Utils getIDFA]}];
+    if ([ChatDemoHelper shareHelper].mainVC.timerNotice) {
+        [[ChatDemoHelper shareHelper].mainVC.timerNotice setFireDate:[NSDate distantPast]];
+    }
 }
 
 - (void)applicationDidBecomeActive:(UIApplication *)application
 {
     // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
-    [MobClick updateOnlineConfig];
+//    [MobClick updateOnlineConfig];
     
 }
 
 - (void)applicationWillTerminate:(UIApplication *)application
 {
     // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+    //上报:程序被杀死时候调用
+    NSInteger thedate = [[NSDate date] timeIntervalSince1970] - [AppManager sharedManager].actived_seconds;
+    
+    [AppManager sharedManager].actived_seconds = [[NSDate date] timeIntervalSince1970];
+    
+    [[NetManager sharedManager] clientReport:@"client_inactive" params:nil content:@{@"user_id":[UserManager sharedManager].userID,@"uuid":[Utils getAPPOnlyUUID],@"idfa":[Utils getIDFA],@"actived_seconds":[NSNumber numberWithInteger:thedate]} block:^(SimpleResp *resp) {
+        
+        
+    }];
+    
 }
 
 - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler
diff --git a/ivwen/AppDelegate/File.swift b/ivwen/AppDelegate/File.swift
deleted file mode 100644
index caca1faf..00000000
--- a/ivwen/AppDelegate/File.swift
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-//  File.swift
-//  ivwen
-//
-//  Created by 王磊 on 2017/6/26.
-//  Copyright © 2017年 lanjingren. All rights reserved.
-//
-
-import Foundation
-
-//let MPWeakSelf(type) = __weak typeof(type) weak##type = type
-//func MPWeakSelf(object: NSObject) -> NSObject {
-//    weak var weakSelf = object
-//}
diff --git a/ivwen/AppDelegate/Info.plist b/ivwen/AppDelegate/Info.plist
index 0b4f5542..a2b16174 100644
--- a/ivwen/AppDelegate/Info.plist
+++ b/ivwen/AppDelegate/Info.plist
@@ -15,7 +15,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>4.1.4</string>
+	<string>4.1.5</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleURLTypes</key>
@@ -60,19 +60,11 @@
 				<string>meipian987570993</string>
 			</array>
 		</dict>
-		<dict>
-			<key>CFBundleTypeRole</key>
-			<string>Editor</string>
-			<key>CFBundleURLSchemes</key>
-			<array>
-				<string>myMeiPian</string>
-			</array>
-		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>4.1.4.3</string>
+	<string>4.1.5.0</string>
 	<key>Debug Version</key>
-	<true/>
+	<false/>
 	<key>LSApplicationCategoryType</key>
 	<string></string>
 	<key>LSApplicationQueriesSchemes</key>
diff --git a/ivwen/AppDelegate/PrefixHeader.pch b/ivwen/AppDelegate/PrefixHeader.pch
index 9dfc507c..2b88aafe 100644
--- a/ivwen/AppDelegate/PrefixHeader.pch
+++ b/ivwen/AppDelegate/PrefixHeader.pch
@@ -22,7 +22,7 @@
 #import "Constants.h"
 #import "Utils.h"
 #import "ArticleManager.h"
-#import "MobClick.h"
+#import "UMMobClick/MobClick.h"
 #import "UIImageView+URLSupport.h"
 #import "MPConst.h"
 #import "UIColor+Category.h"
@@ -61,6 +61,7 @@
 #import "MJRefreshGifMeiPian.h"
 #import "SVProgressHUD.h"
 #import "SVProgressHUD+DGActivityIndicatorView.h"
+#import "SFHFKeychainUtils.h"
 #import "NSString+Category.h"
 
 #ifdef __IPHONE_8_0
diff --git a/ivwen/AppDelegate/ivwen-Bridging-Header.h b/ivwen/AppDelegate/ivwen-Bridging-Header.h
deleted file mode 100644
index 5828cfe3..00000000
--- a/ivwen/AppDelegate/ivwen-Bridging-Header.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-//  Use this file to import your target's public headers that you would like to expose to Swift.
-//
-
-
-#import "BaseViewController.h"
-#import "DissertationListTableViewCell.h"
-#import "MJRefreshGifMeiPian.h"
-#import "MJRefresh.h"
-#import "NetManager.h"
-#import "NODataView.h"
-#import "Constants.h"
-#import "Utils.h"
-#import "DissertationDetailViewController.h"
-#import "NSDictionary+TypeCheck.h"
diff --git a/ivwen/Images.xcassets/article_state_rcmd.imageset/Contents.json b/ivwen/Images.xcassets/advert_mark.imageset/Contents.json
similarity index 73%
rename from ivwen/Images.xcassets/article_state_rcmd.imageset/Contents.json
rename to ivwen/Images.xcassets/advert_mark.imageset/Contents.json
index 6fb93a11..bda4497a 100644
--- a/ivwen/Images.xcassets/article_state_rcmd.imageset/Contents.json
+++ b/ivwen/Images.xcassets/advert_mark.imageset/Contents.json
@@ -6,11 +6,12 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "article_state_rcmd.png",
+      "filename" : "文章广告标签@2x.png",
       "scale" : "2x"
     },
     {
       "idiom" : "universal",
+      "filename" : "文章广告标签@3x.png",
       "scale" : "3x"
     }
   ],
diff --git "a/ivwen/Images.xcassets/advert_mark.imageset/\346\226\207\347\253\240\345\271\277\345\221\212\346\240\207\347\255\276@2x.png" "b/ivwen/Images.xcassets/advert_mark.imageset/\346\226\207\347\253\240\345\271\277\345\221\212\346\240\207\347\255\276@2x.png"
new file mode 100644
index 00000000..cb314760
Binary files /dev/null and "b/ivwen/Images.xcassets/advert_mark.imageset/\346\226\207\347\253\240\345\271\277\345\221\212\346\240\207\347\255\276@2x.png" differ
diff --git "a/ivwen/Images.xcassets/advert_mark.imageset/\346\226\207\347\253\240\345\271\277\345\221\212\346\240\207\347\255\276@3x.png" "b/ivwen/Images.xcassets/advert_mark.imageset/\346\226\207\347\253\240\345\271\277\345\221\212\346\240\207\347\255\276@3x.png"
new file mode 100644
index 00000000..e7f1d282
Binary files /dev/null and "b/ivwen/Images.xcassets/advert_mark.imageset/\346\226\207\347\253\240\345\271\277\345\221\212\346\240\207\347\255\276@3x.png" differ
diff --git a/ivwen/Images.xcassets/article_state_rcmd.imageset/article_state_rcmd.png b/ivwen/Images.xcassets/article_state_rcmd.imageset/article_state_rcmd.png
deleted file mode 100644
index 61cb1a67..00000000
Binary files a/ivwen/Images.xcassets/article_state_rcmd.imageset/article_state_rcmd.png and /dev/null differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__0001.imageset/loading_0049_\345\233\276\345\261\202-1.png" "b/ivwen/Images.xcassets/dropdown_anim__0001.imageset/loading_0049_\345\233\276\345\261\202-1.png"
index 325ba37d..282ec808 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__0001.imageset/loading_0049_\345\233\276\345\261\202-1.png" and "b/ivwen/Images.xcassets/dropdown_anim__0001.imageset/loading_0049_\345\233\276\345\261\202-1.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00010.imageset/loading_0040_\345\233\276\345\261\202-10.png" "b/ivwen/Images.xcassets/dropdown_anim__00010.imageset/loading_0040_\345\233\276\345\261\202-10.png"
index e0a13dff..43d0a51a 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00010.imageset/loading_0040_\345\233\276\345\261\202-10.png" and "b/ivwen/Images.xcassets/dropdown_anim__00010.imageset/loading_0040_\345\233\276\345\261\202-10.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00011.imageset/loading_0039_\345\233\276\345\261\202-11.png" "b/ivwen/Images.xcassets/dropdown_anim__00011.imageset/loading_0039_\345\233\276\345\261\202-11.png"
index ca50db44..b6f937ce 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00011.imageset/loading_0039_\345\233\276\345\261\202-11.png" and "b/ivwen/Images.xcassets/dropdown_anim__00011.imageset/loading_0039_\345\233\276\345\261\202-11.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00012.imageset/loading_0038_\345\233\276\345\261\202-12.png" "b/ivwen/Images.xcassets/dropdown_anim__00012.imageset/loading_0038_\345\233\276\345\261\202-12.png"
index f695d521..8a4a4e9e 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00012.imageset/loading_0038_\345\233\276\345\261\202-12.png" and "b/ivwen/Images.xcassets/dropdown_anim__00012.imageset/loading_0038_\345\233\276\345\261\202-12.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00013.imageset/loading_0037_\345\233\276\345\261\202-13.png" "b/ivwen/Images.xcassets/dropdown_anim__00013.imageset/loading_0037_\345\233\276\345\261\202-13.png"
index 920608f0..81850008 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00013.imageset/loading_0037_\345\233\276\345\261\202-13.png" and "b/ivwen/Images.xcassets/dropdown_anim__00013.imageset/loading_0037_\345\233\276\345\261\202-13.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00014.imageset/loading_0036_\345\233\276\345\261\202-14.png" "b/ivwen/Images.xcassets/dropdown_anim__00014.imageset/loading_0036_\345\233\276\345\261\202-14.png"
index f0b22c5c..1bad5291 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00014.imageset/loading_0036_\345\233\276\345\261\202-14.png" and "b/ivwen/Images.xcassets/dropdown_anim__00014.imageset/loading_0036_\345\233\276\345\261\202-14.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00015.imageset/loading_0035_\345\233\276\345\261\202-15.png" "b/ivwen/Images.xcassets/dropdown_anim__00015.imageset/loading_0035_\345\233\276\345\261\202-15.png"
index 3251b5b4..d520b42d 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00015.imageset/loading_0035_\345\233\276\345\261\202-15.png" and "b/ivwen/Images.xcassets/dropdown_anim__00015.imageset/loading_0035_\345\233\276\345\261\202-15.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00016.imageset/loading_0034_\345\233\276\345\261\202-16.png" "b/ivwen/Images.xcassets/dropdown_anim__00016.imageset/loading_0034_\345\233\276\345\261\202-16.png"
index 2e3386a5..040c9dce 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00016.imageset/loading_0034_\345\233\276\345\261\202-16.png" and "b/ivwen/Images.xcassets/dropdown_anim__00016.imageset/loading_0034_\345\233\276\345\261\202-16.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00017.imageset/loading_0033_\345\233\276\345\261\202-17.png" "b/ivwen/Images.xcassets/dropdown_anim__00017.imageset/loading_0033_\345\233\276\345\261\202-17.png"
index 9bc88cd7..fe49d0e0 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00017.imageset/loading_0033_\345\233\276\345\261\202-17.png" and "b/ivwen/Images.xcassets/dropdown_anim__00017.imageset/loading_0033_\345\233\276\345\261\202-17.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00018.imageset/loading_0032_\345\233\276\345\261\202-18.png" "b/ivwen/Images.xcassets/dropdown_anim__00018.imageset/loading_0032_\345\233\276\345\261\202-18.png"
index 59e1f52f..39304e09 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00018.imageset/loading_0032_\345\233\276\345\261\202-18.png" and "b/ivwen/Images.xcassets/dropdown_anim__00018.imageset/loading_0032_\345\233\276\345\261\202-18.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00019.imageset/loading_0031_\345\233\276\345\261\202-19.png" "b/ivwen/Images.xcassets/dropdown_anim__00019.imageset/loading_0031_\345\233\276\345\261\202-19.png"
index c1e7b65e..e68e7fc8 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00019.imageset/loading_0031_\345\233\276\345\261\202-19.png" and "b/ivwen/Images.xcassets/dropdown_anim__00019.imageset/loading_0031_\345\233\276\345\261\202-19.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__0002.imageset/loading_0048_\345\233\276\345\261\202-2.png" "b/ivwen/Images.xcassets/dropdown_anim__0002.imageset/loading_0048_\345\233\276\345\261\202-2.png"
index de785136..231fa340 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__0002.imageset/loading_0048_\345\233\276\345\261\202-2.png" and "b/ivwen/Images.xcassets/dropdown_anim__0002.imageset/loading_0048_\345\233\276\345\261\202-2.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00020.imageset/loading_0030_\345\233\276\345\261\202-20.png" "b/ivwen/Images.xcassets/dropdown_anim__00020.imageset/loading_0030_\345\233\276\345\261\202-20.png"
index 6a59b7d8..96f5f267 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00020.imageset/loading_0030_\345\233\276\345\261\202-20.png" and "b/ivwen/Images.xcassets/dropdown_anim__00020.imageset/loading_0030_\345\233\276\345\261\202-20.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00021.imageset/loading_0029_\345\233\276\345\261\202-21.png" "b/ivwen/Images.xcassets/dropdown_anim__00021.imageset/loading_0029_\345\233\276\345\261\202-21.png"
index 596af439..9b135bb6 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00021.imageset/loading_0029_\345\233\276\345\261\202-21.png" and "b/ivwen/Images.xcassets/dropdown_anim__00021.imageset/loading_0029_\345\233\276\345\261\202-21.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00022.imageset/loading_0028_\345\233\276\345\261\202-22.png" "b/ivwen/Images.xcassets/dropdown_anim__00022.imageset/loading_0028_\345\233\276\345\261\202-22.png"
index 7ac10be7..7ea692b9 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00022.imageset/loading_0028_\345\233\276\345\261\202-22.png" and "b/ivwen/Images.xcassets/dropdown_anim__00022.imageset/loading_0028_\345\233\276\345\261\202-22.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00023.imageset/loading_0027_\345\233\276\345\261\202-23.png" "b/ivwen/Images.xcassets/dropdown_anim__00023.imageset/loading_0027_\345\233\276\345\261\202-23.png"
index db4e8cab..84353fdc 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00023.imageset/loading_0027_\345\233\276\345\261\202-23.png" and "b/ivwen/Images.xcassets/dropdown_anim__00023.imageset/loading_0027_\345\233\276\345\261\202-23.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00024.imageset/loading_0026_\345\233\276\345\261\202-24.png" "b/ivwen/Images.xcassets/dropdown_anim__00024.imageset/loading_0026_\345\233\276\345\261\202-24.png"
index 395bdcbe..7e41b2be 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00024.imageset/loading_0026_\345\233\276\345\261\202-24.png" and "b/ivwen/Images.xcassets/dropdown_anim__00024.imageset/loading_0026_\345\233\276\345\261\202-24.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00025.imageset/loading_0025_\345\233\276\345\261\202-25.png" "b/ivwen/Images.xcassets/dropdown_anim__00025.imageset/loading_0025_\345\233\276\345\261\202-25.png"
index 0cfd52cb..d09a8a61 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00025.imageset/loading_0025_\345\233\276\345\261\202-25.png" and "b/ivwen/Images.xcassets/dropdown_anim__00025.imageset/loading_0025_\345\233\276\345\261\202-25.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00026.imageset/loading_0024_\345\233\276\345\261\202-26.png" "b/ivwen/Images.xcassets/dropdown_anim__00026.imageset/loading_0024_\345\233\276\345\261\202-26.png"
index 7e268323..12f9e01c 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00026.imageset/loading_0024_\345\233\276\345\261\202-26.png" and "b/ivwen/Images.xcassets/dropdown_anim__00026.imageset/loading_0024_\345\233\276\345\261\202-26.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00027.imageset/loading_0023_\345\233\276\345\261\202-27.png" "b/ivwen/Images.xcassets/dropdown_anim__00027.imageset/loading_0023_\345\233\276\345\261\202-27.png"
index 0c74877a..0ce64a4c 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00027.imageset/loading_0023_\345\233\276\345\261\202-27.png" and "b/ivwen/Images.xcassets/dropdown_anim__00027.imageset/loading_0023_\345\233\276\345\261\202-27.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00028.imageset/loading_0022_\345\233\276\345\261\202-28.png" "b/ivwen/Images.xcassets/dropdown_anim__00028.imageset/loading_0022_\345\233\276\345\261\202-28.png"
index 6f9112cb..ef7fad1b 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00028.imageset/loading_0022_\345\233\276\345\261\202-28.png" and "b/ivwen/Images.xcassets/dropdown_anim__00028.imageset/loading_0022_\345\233\276\345\261\202-28.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00029.imageset/loading_0021_\345\233\276\345\261\202-29.png" "b/ivwen/Images.xcassets/dropdown_anim__00029.imageset/loading_0021_\345\233\276\345\261\202-29.png"
index f91c24cf..89a3adcc 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00029.imageset/loading_0021_\345\233\276\345\261\202-29.png" and "b/ivwen/Images.xcassets/dropdown_anim__00029.imageset/loading_0021_\345\233\276\345\261\202-29.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__0003.imageset/loading_0047_\345\233\276\345\261\202-3.png" "b/ivwen/Images.xcassets/dropdown_anim__0003.imageset/loading_0047_\345\233\276\345\261\202-3.png"
index 35639c2c..21af6716 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__0003.imageset/loading_0047_\345\233\276\345\261\202-3.png" and "b/ivwen/Images.xcassets/dropdown_anim__0003.imageset/loading_0047_\345\233\276\345\261\202-3.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00030.imageset/loading_0020_\345\233\276\345\261\202-30.png" "b/ivwen/Images.xcassets/dropdown_anim__00030.imageset/loading_0020_\345\233\276\345\261\202-30.png"
index dc8177ab..19d8f397 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00030.imageset/loading_0020_\345\233\276\345\261\202-30.png" and "b/ivwen/Images.xcassets/dropdown_anim__00030.imageset/loading_0020_\345\233\276\345\261\202-30.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00031.imageset/loading_0019_\345\233\276\345\261\202-31.png" "b/ivwen/Images.xcassets/dropdown_anim__00031.imageset/loading_0019_\345\233\276\345\261\202-31.png"
index ab603158..92d2248a 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00031.imageset/loading_0019_\345\233\276\345\261\202-31.png" and "b/ivwen/Images.xcassets/dropdown_anim__00031.imageset/loading_0019_\345\233\276\345\261\202-31.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00032.imageset/loading_0018_\345\233\276\345\261\202-32.png" "b/ivwen/Images.xcassets/dropdown_anim__00032.imageset/loading_0018_\345\233\276\345\261\202-32.png"
index 4726665a..30170135 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00032.imageset/loading_0018_\345\233\276\345\261\202-32.png" and "b/ivwen/Images.xcassets/dropdown_anim__00032.imageset/loading_0018_\345\233\276\345\261\202-32.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00033.imageset/loading_0017_\345\233\276\345\261\202-33.png" "b/ivwen/Images.xcassets/dropdown_anim__00033.imageset/loading_0017_\345\233\276\345\261\202-33.png"
index 6c5dc8bd..264c8f03 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00033.imageset/loading_0017_\345\233\276\345\261\202-33.png" and "b/ivwen/Images.xcassets/dropdown_anim__00033.imageset/loading_0017_\345\233\276\345\261\202-33.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00034.imageset/loading_0016_\345\233\276\345\261\202-34.png" "b/ivwen/Images.xcassets/dropdown_anim__00034.imageset/loading_0016_\345\233\276\345\261\202-34.png"
index 569eaf64..43017f4b 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00034.imageset/loading_0016_\345\233\276\345\261\202-34.png" and "b/ivwen/Images.xcassets/dropdown_anim__00034.imageset/loading_0016_\345\233\276\345\261\202-34.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00035.imageset/loading_0015_\345\233\276\345\261\202-35.png" "b/ivwen/Images.xcassets/dropdown_anim__00035.imageset/loading_0015_\345\233\276\345\261\202-35.png"
index 80932d4b..d416d158 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00035.imageset/loading_0015_\345\233\276\345\261\202-35.png" and "b/ivwen/Images.xcassets/dropdown_anim__00035.imageset/loading_0015_\345\233\276\345\261\202-35.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00036.imageset/loading_0014_\345\233\276\345\261\202-36.png" "b/ivwen/Images.xcassets/dropdown_anim__00036.imageset/loading_0014_\345\233\276\345\261\202-36.png"
index 25688cb7..67e03969 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00036.imageset/loading_0014_\345\233\276\345\261\202-36.png" and "b/ivwen/Images.xcassets/dropdown_anim__00036.imageset/loading_0014_\345\233\276\345\261\202-36.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00037.imageset/loading_0013_\345\233\276\345\261\202-37.png" "b/ivwen/Images.xcassets/dropdown_anim__00037.imageset/loading_0013_\345\233\276\345\261\202-37.png"
index 5341f23d..1746b36b 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00037.imageset/loading_0013_\345\233\276\345\261\202-37.png" and "b/ivwen/Images.xcassets/dropdown_anim__00037.imageset/loading_0013_\345\233\276\345\261\202-37.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00038.imageset/loading_0012_\345\233\276\345\261\202-38.png" "b/ivwen/Images.xcassets/dropdown_anim__00038.imageset/loading_0012_\345\233\276\345\261\202-38.png"
index af945e9f..9d68f4da 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00038.imageset/loading_0012_\345\233\276\345\261\202-38.png" and "b/ivwen/Images.xcassets/dropdown_anim__00038.imageset/loading_0012_\345\233\276\345\261\202-38.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00039.imageset/loading_0011_\345\233\276\345\261\202-39.png" "b/ivwen/Images.xcassets/dropdown_anim__00039.imageset/loading_0011_\345\233\276\345\261\202-39.png"
index 67c57814..ab5746c9 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00039.imageset/loading_0011_\345\233\276\345\261\202-39.png" and "b/ivwen/Images.xcassets/dropdown_anim__00039.imageset/loading_0011_\345\233\276\345\261\202-39.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__0004.imageset/loading_0046_\345\233\276\345\261\202-4.png" "b/ivwen/Images.xcassets/dropdown_anim__0004.imageset/loading_0046_\345\233\276\345\261\202-4.png"
index b8a55663..05c44c05 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__0004.imageset/loading_0046_\345\233\276\345\261\202-4.png" and "b/ivwen/Images.xcassets/dropdown_anim__0004.imageset/loading_0046_\345\233\276\345\261\202-4.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00040.imageset/loading_0010_\345\233\276\345\261\202-40.png" "b/ivwen/Images.xcassets/dropdown_anim__00040.imageset/loading_0010_\345\233\276\345\261\202-40.png"
index a40a4a85..1b176b50 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00040.imageset/loading_0010_\345\233\276\345\261\202-40.png" and "b/ivwen/Images.xcassets/dropdown_anim__00040.imageset/loading_0010_\345\233\276\345\261\202-40.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00041.imageset/loading_0009_\345\233\276\345\261\202-41.png" "b/ivwen/Images.xcassets/dropdown_anim__00041.imageset/loading_0009_\345\233\276\345\261\202-41.png"
index 8595a661..ed7b5798 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00041.imageset/loading_0009_\345\233\276\345\261\202-41.png" and "b/ivwen/Images.xcassets/dropdown_anim__00041.imageset/loading_0009_\345\233\276\345\261\202-41.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00042.imageset/loading_0008_\345\233\276\345\261\202-42.png" "b/ivwen/Images.xcassets/dropdown_anim__00042.imageset/loading_0008_\345\233\276\345\261\202-42.png"
index c85e5914..0a37020d 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00042.imageset/loading_0008_\345\233\276\345\261\202-42.png" and "b/ivwen/Images.xcassets/dropdown_anim__00042.imageset/loading_0008_\345\233\276\345\261\202-42.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00043.imageset/loading_0007_\345\233\276\345\261\202-43.png" "b/ivwen/Images.xcassets/dropdown_anim__00043.imageset/loading_0007_\345\233\276\345\261\202-43.png"
index 4b22f430..c04f42b0 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00043.imageset/loading_0007_\345\233\276\345\261\202-43.png" and "b/ivwen/Images.xcassets/dropdown_anim__00043.imageset/loading_0007_\345\233\276\345\261\202-43.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00044.imageset/loading_0006_\345\233\276\345\261\202-44.png" "b/ivwen/Images.xcassets/dropdown_anim__00044.imageset/loading_0006_\345\233\276\345\261\202-44.png"
index 7848db3d..718870e9 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00044.imageset/loading_0006_\345\233\276\345\261\202-44.png" and "b/ivwen/Images.xcassets/dropdown_anim__00044.imageset/loading_0006_\345\233\276\345\261\202-44.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00045.imageset/loading_0005_\345\233\276\345\261\202-45.png" "b/ivwen/Images.xcassets/dropdown_anim__00045.imageset/loading_0005_\345\233\276\345\261\202-45.png"
index 6c450886..56f43b91 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00045.imageset/loading_0005_\345\233\276\345\261\202-45.png" and "b/ivwen/Images.xcassets/dropdown_anim__00045.imageset/loading_0005_\345\233\276\345\261\202-45.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00046.imageset/loading_0004_\345\233\276\345\261\202-46.png" "b/ivwen/Images.xcassets/dropdown_anim__00046.imageset/loading_0004_\345\233\276\345\261\202-46.png"
index c1f58370..306a4564 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00046.imageset/loading_0004_\345\233\276\345\261\202-46.png" and "b/ivwen/Images.xcassets/dropdown_anim__00046.imageset/loading_0004_\345\233\276\345\261\202-46.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00047.imageset/loading_0003_\345\233\276\345\261\202-47.png" "b/ivwen/Images.xcassets/dropdown_anim__00047.imageset/loading_0003_\345\233\276\345\261\202-47.png"
index 1e3d4690..1182e3f8 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00047.imageset/loading_0003_\345\233\276\345\261\202-47.png" and "b/ivwen/Images.xcassets/dropdown_anim__00047.imageset/loading_0003_\345\233\276\345\261\202-47.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00048.imageset/loading_0002_\345\233\276\345\261\202-48.png" "b/ivwen/Images.xcassets/dropdown_anim__00048.imageset/loading_0002_\345\233\276\345\261\202-48.png"
index bbb31aa5..a356fdbe 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00048.imageset/loading_0002_\345\233\276\345\261\202-48.png" and "b/ivwen/Images.xcassets/dropdown_anim__00048.imageset/loading_0002_\345\233\276\345\261\202-48.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00049.imageset/loading_0001_\345\233\276\345\261\202-49.png" "b/ivwen/Images.xcassets/dropdown_anim__00049.imageset/loading_0001_\345\233\276\345\261\202-49.png"
index b970052c..64d74816 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00049.imageset/loading_0001_\345\233\276\345\261\202-49.png" and "b/ivwen/Images.xcassets/dropdown_anim__00049.imageset/loading_0001_\345\233\276\345\261\202-49.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__0005.imageset/loading_0045_\345\233\276\345\261\202-5.png" "b/ivwen/Images.xcassets/dropdown_anim__0005.imageset/loading_0045_\345\233\276\345\261\202-5.png"
index b88a208c..11ad8b86 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__0005.imageset/loading_0045_\345\233\276\345\261\202-5.png" and "b/ivwen/Images.xcassets/dropdown_anim__0005.imageset/loading_0045_\345\233\276\345\261\202-5.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__00050.imageset/loading_0000_\345\233\276\345\261\202-50.png" "b/ivwen/Images.xcassets/dropdown_anim__00050.imageset/loading_0000_\345\233\276\345\261\202-50.png"
index 10b722e8..e5542801 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__00050.imageset/loading_0000_\345\233\276\345\261\202-50.png" and "b/ivwen/Images.xcassets/dropdown_anim__00050.imageset/loading_0000_\345\233\276\345\261\202-50.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__0006.imageset/loading_0044_\345\233\276\345\261\202-6.png" "b/ivwen/Images.xcassets/dropdown_anim__0006.imageset/loading_0044_\345\233\276\345\261\202-6.png"
index 36ee69d9..09393abd 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__0006.imageset/loading_0044_\345\233\276\345\261\202-6.png" and "b/ivwen/Images.xcassets/dropdown_anim__0006.imageset/loading_0044_\345\233\276\345\261\202-6.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__0007.imageset/loading_0043_\345\233\276\345\261\202-7.png" "b/ivwen/Images.xcassets/dropdown_anim__0007.imageset/loading_0043_\345\233\276\345\261\202-7.png"
index 5df87146..7de46893 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__0007.imageset/loading_0043_\345\233\276\345\261\202-7.png" and "b/ivwen/Images.xcassets/dropdown_anim__0007.imageset/loading_0043_\345\233\276\345\261\202-7.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__0008.imageset/loading_0042_\345\233\276\345\261\202-8.png" "b/ivwen/Images.xcassets/dropdown_anim__0008.imageset/loading_0042_\345\233\276\345\261\202-8.png"
index 56e73b5e..97b0d513 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__0008.imageset/loading_0042_\345\233\276\345\261\202-8.png" and "b/ivwen/Images.xcassets/dropdown_anim__0008.imageset/loading_0042_\345\233\276\345\261\202-8.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_anim__0009.imageset/loading_0041_\345\233\276\345\261\202-9.png" "b/ivwen/Images.xcassets/dropdown_anim__0009.imageset/loading_0041_\345\233\276\345\261\202-9.png"
index 2e6b1a50..f79b0e0a 100644
Binary files "a/ivwen/Images.xcassets/dropdown_anim__0009.imageset/loading_0041_\345\233\276\345\261\202-9.png" and "b/ivwen/Images.xcassets/dropdown_anim__0009.imageset/loading_0041_\345\233\276\345\261\202-9.png" differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_01.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_01.imageset/Contents.json
index c44581c6..a92fa069 100644
--- a/ivwen/Images.xcassets/dropdown_loading_01.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_01.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0039_图层-1.png",
+      "filename" : "dropdown_40.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_01.imageset/dropdown_loading_0039_\345\233\276\345\261\202-1.png" b/ivwen/Images.xcassets/dropdown_loading_01.imageset/dropdown_40.png
similarity index 100%
rename from "ivwen/Images.xcassets/dropdown_loading_01.imageset/dropdown_loading_0039_\345\233\276\345\261\202-1.png"
rename to ivwen/Images.xcassets/dropdown_loading_01.imageset/dropdown_40.png
diff --git a/ivwen/Images.xcassets/dropdown_loading_010.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_010.imageset/Contents.json
index 7f5cf9fd..4f8a0087 100644
--- a/ivwen/Images.xcassets/dropdown_loading_010.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_010.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0030_图层-10.png",
+      "filename" : "dropdown_0031_图层-10.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_010.imageset/dropdown_0031_\345\233\276\345\261\202-10.png" "b/ivwen/Images.xcassets/dropdown_loading_010.imageset/dropdown_0031_\345\233\276\345\261\202-10.png"
new file mode 100644
index 00000000..1afbe15a
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_010.imageset/dropdown_0031_\345\233\276\345\261\202-10.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_010.imageset/dropdown_loading_0030_\345\233\276\345\261\202-10.png" "b/ivwen/Images.xcassets/dropdown_loading_010.imageset/dropdown_loading_0030_\345\233\276\345\261\202-10.png"
deleted file mode 100644
index f1434745..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_010.imageset/dropdown_loading_0030_\345\233\276\345\261\202-10.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_011.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_011.imageset/Contents.json
index 9e9bdbaa..9fd0e46a 100644
--- a/ivwen/Images.xcassets/dropdown_loading_011.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_011.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0029_图层-11.png",
+      "filename" : "dropdown_0030_图层-11.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_011.imageset/dropdown_0030_\345\233\276\345\261\202-11.png" "b/ivwen/Images.xcassets/dropdown_loading_011.imageset/dropdown_0030_\345\233\276\345\261\202-11.png"
new file mode 100644
index 00000000..6a6e7d9a
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_011.imageset/dropdown_0030_\345\233\276\345\261\202-11.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_011.imageset/dropdown_loading_0029_\345\233\276\345\261\202-11.png" "b/ivwen/Images.xcassets/dropdown_loading_011.imageset/dropdown_loading_0029_\345\233\276\345\261\202-11.png"
deleted file mode 100644
index 56c51d2d..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_011.imageset/dropdown_loading_0029_\345\233\276\345\261\202-11.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_012.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_012.imageset/Contents.json
index 28e5dcf8..65a5fb05 100644
--- a/ivwen/Images.xcassets/dropdown_loading_012.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_012.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0028_图层-12.png",
+      "filename" : "dropdown_0029_图层-12.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_012.imageset/dropdown_0029_\345\233\276\345\261\202-12.png" "b/ivwen/Images.xcassets/dropdown_loading_012.imageset/dropdown_0029_\345\233\276\345\261\202-12.png"
new file mode 100644
index 00000000..81b66411
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_012.imageset/dropdown_0029_\345\233\276\345\261\202-12.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_012.imageset/dropdown_loading_0028_\345\233\276\345\261\202-12.png" "b/ivwen/Images.xcassets/dropdown_loading_012.imageset/dropdown_loading_0028_\345\233\276\345\261\202-12.png"
deleted file mode 100644
index 7242c984..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_012.imageset/dropdown_loading_0028_\345\233\276\345\261\202-12.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_013.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_013.imageset/Contents.json
index 69948826..7afd93f4 100644
--- a/ivwen/Images.xcassets/dropdown_loading_013.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_013.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0027_图层-13.png",
+      "filename" : "dropdown_0028_图层-13.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_013.imageset/dropdown_0028_\345\233\276\345\261\202-13.png" "b/ivwen/Images.xcassets/dropdown_loading_013.imageset/dropdown_0028_\345\233\276\345\261\202-13.png"
new file mode 100644
index 00000000..51321e3e
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_013.imageset/dropdown_0028_\345\233\276\345\261\202-13.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_013.imageset/dropdown_loading_0027_\345\233\276\345\261\202-13.png" "b/ivwen/Images.xcassets/dropdown_loading_013.imageset/dropdown_loading_0027_\345\233\276\345\261\202-13.png"
deleted file mode 100644
index 207e6335..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_013.imageset/dropdown_loading_0027_\345\233\276\345\261\202-13.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_014.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_014.imageset/Contents.json
index 3de19f95..7c6853ef 100644
--- a/ivwen/Images.xcassets/dropdown_loading_014.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_014.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0026_图层-14.png",
+      "filename" : "dropdown_0027_图层-14.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_014.imageset/dropdown_0027_\345\233\276\345\261\202-14.png" "b/ivwen/Images.xcassets/dropdown_loading_014.imageset/dropdown_0027_\345\233\276\345\261\202-14.png"
new file mode 100644
index 00000000..4eea913b
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_014.imageset/dropdown_0027_\345\233\276\345\261\202-14.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_014.imageset/dropdown_loading_0026_\345\233\276\345\261\202-14.png" "b/ivwen/Images.xcassets/dropdown_loading_014.imageset/dropdown_loading_0026_\345\233\276\345\261\202-14.png"
deleted file mode 100644
index 393d288a..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_014.imageset/dropdown_loading_0026_\345\233\276\345\261\202-14.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_015.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_015.imageset/Contents.json
index 8368a772..1b7eedfa 100644
--- a/ivwen/Images.xcassets/dropdown_loading_015.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_015.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0025_图层-15.png",
+      "filename" : "dropdown_0026_图层-15.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_015.imageset/dropdown_0026_\345\233\276\345\261\202-15.png" "b/ivwen/Images.xcassets/dropdown_loading_015.imageset/dropdown_0026_\345\233\276\345\261\202-15.png"
new file mode 100644
index 00000000..6b4057ba
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_015.imageset/dropdown_0026_\345\233\276\345\261\202-15.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_015.imageset/dropdown_loading_0025_\345\233\276\345\261\202-15.png" "b/ivwen/Images.xcassets/dropdown_loading_015.imageset/dropdown_loading_0025_\345\233\276\345\261\202-15.png"
deleted file mode 100644
index 2a946f31..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_015.imageset/dropdown_loading_0025_\345\233\276\345\261\202-15.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_016.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_016.imageset/Contents.json
index 54d1ddea..316c25d0 100644
--- a/ivwen/Images.xcassets/dropdown_loading_016.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_016.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0024_图层-16.png",
+      "filename" : "dropdown_0025_图层-16.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_016.imageset/dropdown_0025_\345\233\276\345\261\202-16.png" "b/ivwen/Images.xcassets/dropdown_loading_016.imageset/dropdown_0025_\345\233\276\345\261\202-16.png"
new file mode 100644
index 00000000..229f36d6
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_016.imageset/dropdown_0025_\345\233\276\345\261\202-16.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_016.imageset/dropdown_loading_0024_\345\233\276\345\261\202-16.png" "b/ivwen/Images.xcassets/dropdown_loading_016.imageset/dropdown_loading_0024_\345\233\276\345\261\202-16.png"
deleted file mode 100644
index ccf8d42f..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_016.imageset/dropdown_loading_0024_\345\233\276\345\261\202-16.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_017.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_017.imageset/Contents.json
index 4f5b9789..e067dc6d 100644
--- a/ivwen/Images.xcassets/dropdown_loading_017.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_017.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0023_图层-17.png",
+      "filename" : "dropdown_0024_图层-17.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_017.imageset/dropdown_0024_\345\233\276\345\261\202-17.png" "b/ivwen/Images.xcassets/dropdown_loading_017.imageset/dropdown_0024_\345\233\276\345\261\202-17.png"
new file mode 100644
index 00000000..b06ddf43
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_017.imageset/dropdown_0024_\345\233\276\345\261\202-17.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_017.imageset/dropdown_loading_0023_\345\233\276\345\261\202-17.png" "b/ivwen/Images.xcassets/dropdown_loading_017.imageset/dropdown_loading_0023_\345\233\276\345\261\202-17.png"
deleted file mode 100644
index 1d8b35b2..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_017.imageset/dropdown_loading_0023_\345\233\276\345\261\202-17.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_018.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_018.imageset/Contents.json
index 6fe42fa1..6788da56 100644
--- a/ivwen/Images.xcassets/dropdown_loading_018.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_018.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0022_图层-18.png",
+      "filename" : "dropdown_0023_图层-18.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_018.imageset/dropdown_0023_\345\233\276\345\261\202-18.png" "b/ivwen/Images.xcassets/dropdown_loading_018.imageset/dropdown_0023_\345\233\276\345\261\202-18.png"
new file mode 100644
index 00000000..4c9e7f30
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_018.imageset/dropdown_0023_\345\233\276\345\261\202-18.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_018.imageset/dropdown_loading_0022_\345\233\276\345\261\202-18.png" "b/ivwen/Images.xcassets/dropdown_loading_018.imageset/dropdown_loading_0022_\345\233\276\345\261\202-18.png"
deleted file mode 100644
index ce1f310b..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_018.imageset/dropdown_loading_0022_\345\233\276\345\261\202-18.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_019.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_019.imageset/Contents.json
index 34cd5728..e4fa8955 100644
--- a/ivwen/Images.xcassets/dropdown_loading_019.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_019.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0021_图层-19.png",
+      "filename" : "dropdown_0022_图层-19.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_019.imageset/dropdown_0022_\345\233\276\345\261\202-19.png" "b/ivwen/Images.xcassets/dropdown_loading_019.imageset/dropdown_0022_\345\233\276\345\261\202-19.png"
new file mode 100644
index 00000000..2b39d034
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_019.imageset/dropdown_0022_\345\233\276\345\261\202-19.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_019.imageset/dropdown_loading_0021_\345\233\276\345\261\202-19.png" "b/ivwen/Images.xcassets/dropdown_loading_019.imageset/dropdown_loading_0021_\345\233\276\345\261\202-19.png"
deleted file mode 100644
index 279d8437..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_019.imageset/dropdown_loading_0021_\345\233\276\345\261\202-19.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_02.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_02.imageset/Contents.json
index 2d3845f6..bb54cfb8 100644
--- a/ivwen/Images.xcassets/dropdown_loading_02.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_02.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0038_图层-2.png",
+      "filename" : "dropdown_0039_图层-2.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_02.imageset/dropdown_0039_\345\233\276\345\261\202-2.png" "b/ivwen/Images.xcassets/dropdown_loading_02.imageset/dropdown_0039_\345\233\276\345\261\202-2.png"
new file mode 100644
index 00000000..8aed304a
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_02.imageset/dropdown_0039_\345\233\276\345\261\202-2.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_02.imageset/dropdown_loading_0038_\345\233\276\345\261\202-2.png" "b/ivwen/Images.xcassets/dropdown_loading_02.imageset/dropdown_loading_0038_\345\233\276\345\261\202-2.png"
deleted file mode 100644
index a31ae2e3..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_02.imageset/dropdown_loading_0038_\345\233\276\345\261\202-2.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_020.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_020.imageset/Contents.json
index 3d33db03..7124d6b7 100644
--- a/ivwen/Images.xcassets/dropdown_loading_020.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_020.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0020_图层-20.png",
+      "filename" : "dropdown_0021_图层-20.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_020.imageset/dropdown_0021_\345\233\276\345\261\202-20.png" "b/ivwen/Images.xcassets/dropdown_loading_020.imageset/dropdown_0021_\345\233\276\345\261\202-20.png"
new file mode 100644
index 00000000..13f01f5b
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_020.imageset/dropdown_0021_\345\233\276\345\261\202-20.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_020.imageset/dropdown_loading_0020_\345\233\276\345\261\202-20.png" "b/ivwen/Images.xcassets/dropdown_loading_020.imageset/dropdown_loading_0020_\345\233\276\345\261\202-20.png"
deleted file mode 100644
index 3f74d9bc..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_020.imageset/dropdown_loading_0020_\345\233\276\345\261\202-20.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_021.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_021.imageset/Contents.json
index 986735a8..d2b8ec24 100644
--- a/ivwen/Images.xcassets/dropdown_loading_021.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_021.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0019_图层-21.png",
+      "filename" : "dropdown_0020_图层-21.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_021.imageset/dropdown_0020_\345\233\276\345\261\202-21.png" "b/ivwen/Images.xcassets/dropdown_loading_021.imageset/dropdown_0020_\345\233\276\345\261\202-21.png"
new file mode 100644
index 00000000..06eb5c6d
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_021.imageset/dropdown_0020_\345\233\276\345\261\202-21.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_021.imageset/dropdown_loading_0019_\345\233\276\345\261\202-21.png" "b/ivwen/Images.xcassets/dropdown_loading_021.imageset/dropdown_loading_0019_\345\233\276\345\261\202-21.png"
deleted file mode 100644
index 121206b0..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_021.imageset/dropdown_loading_0019_\345\233\276\345\261\202-21.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_022.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_022.imageset/Contents.json
index ad3ce3e6..3257397b 100644
--- a/ivwen/Images.xcassets/dropdown_loading_022.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_022.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0018_图层-22.png",
+      "filename" : "dropdown_0019_图层-22.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_022.imageset/dropdown_0019_\345\233\276\345\261\202-22.png" "b/ivwen/Images.xcassets/dropdown_loading_022.imageset/dropdown_0019_\345\233\276\345\261\202-22.png"
new file mode 100644
index 00000000..909221e0
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_022.imageset/dropdown_0019_\345\233\276\345\261\202-22.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_022.imageset/dropdown_loading_0018_\345\233\276\345\261\202-22.png" "b/ivwen/Images.xcassets/dropdown_loading_022.imageset/dropdown_loading_0018_\345\233\276\345\261\202-22.png"
deleted file mode 100644
index 49cd2cfb..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_022.imageset/dropdown_loading_0018_\345\233\276\345\261\202-22.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_023.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_023.imageset/Contents.json
index f1e7f93f..8d2e1859 100644
--- a/ivwen/Images.xcassets/dropdown_loading_023.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_023.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0017_图层-23.png",
+      "filename" : "dropdown_0018_图层-23.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_023.imageset/dropdown_0018_\345\233\276\345\261\202-23.png" "b/ivwen/Images.xcassets/dropdown_loading_023.imageset/dropdown_0018_\345\233\276\345\261\202-23.png"
new file mode 100644
index 00000000..b16a5fad
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_023.imageset/dropdown_0018_\345\233\276\345\261\202-23.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_023.imageset/dropdown_loading_0017_\345\233\276\345\261\202-23.png" "b/ivwen/Images.xcassets/dropdown_loading_023.imageset/dropdown_loading_0017_\345\233\276\345\261\202-23.png"
deleted file mode 100644
index f6f0300f..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_023.imageset/dropdown_loading_0017_\345\233\276\345\261\202-23.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_024.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_024.imageset/Contents.json
index a887f1bf..8b412917 100644
--- a/ivwen/Images.xcassets/dropdown_loading_024.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_024.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0016_图层-24.png",
+      "filename" : "dropdown_0017_图层-24.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_024.imageset/dropdown_0017_\345\233\276\345\261\202-24.png" "b/ivwen/Images.xcassets/dropdown_loading_024.imageset/dropdown_0017_\345\233\276\345\261\202-24.png"
new file mode 100644
index 00000000..0842e856
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_024.imageset/dropdown_0017_\345\233\276\345\261\202-24.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_024.imageset/dropdown_loading_0016_\345\233\276\345\261\202-24.png" "b/ivwen/Images.xcassets/dropdown_loading_024.imageset/dropdown_loading_0016_\345\233\276\345\261\202-24.png"
deleted file mode 100644
index 3da1a840..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_024.imageset/dropdown_loading_0016_\345\233\276\345\261\202-24.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_025.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_025.imageset/Contents.json
index d1bb8acb..b2f2bfe8 100644
--- a/ivwen/Images.xcassets/dropdown_loading_025.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_025.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0015_图层-25.png",
+      "filename" : "dropdown_0016_图层-25.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_025.imageset/dropdown_0016_\345\233\276\345\261\202-25.png" "b/ivwen/Images.xcassets/dropdown_loading_025.imageset/dropdown_0016_\345\233\276\345\261\202-25.png"
new file mode 100644
index 00000000..6da26f84
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_025.imageset/dropdown_0016_\345\233\276\345\261\202-25.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_025.imageset/dropdown_loading_0015_\345\233\276\345\261\202-25.png" "b/ivwen/Images.xcassets/dropdown_loading_025.imageset/dropdown_loading_0015_\345\233\276\345\261\202-25.png"
deleted file mode 100644
index da341e72..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_025.imageset/dropdown_loading_0015_\345\233\276\345\261\202-25.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_026.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_026.imageset/Contents.json
index b91a167c..6d1e791a 100644
--- a/ivwen/Images.xcassets/dropdown_loading_026.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_026.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0014_图层-26.png",
+      "filename" : "dropdown_0015_图层-26.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_026.imageset/dropdown_0015_\345\233\276\345\261\202-26.png" "b/ivwen/Images.xcassets/dropdown_loading_026.imageset/dropdown_0015_\345\233\276\345\261\202-26.png"
new file mode 100644
index 00000000..6bebe719
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_026.imageset/dropdown_0015_\345\233\276\345\261\202-26.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_026.imageset/dropdown_loading_0014_\345\233\276\345\261\202-26.png" "b/ivwen/Images.xcassets/dropdown_loading_026.imageset/dropdown_loading_0014_\345\233\276\345\261\202-26.png"
deleted file mode 100644
index d20ea379..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_026.imageset/dropdown_loading_0014_\345\233\276\345\261\202-26.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_027.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_027.imageset/Contents.json
index 1c1a2848..cc4c8521 100644
--- a/ivwen/Images.xcassets/dropdown_loading_027.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_027.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0013_图层-27.png",
+      "filename" : "dropdown_0014_图层-27.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_027.imageset/dropdown_0014_\345\233\276\345\261\202-27.png" "b/ivwen/Images.xcassets/dropdown_loading_027.imageset/dropdown_0014_\345\233\276\345\261\202-27.png"
new file mode 100644
index 00000000..6d2c0a39
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_027.imageset/dropdown_0014_\345\233\276\345\261\202-27.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_027.imageset/dropdown_loading_0013_\345\233\276\345\261\202-27.png" "b/ivwen/Images.xcassets/dropdown_loading_027.imageset/dropdown_loading_0013_\345\233\276\345\261\202-27.png"
deleted file mode 100644
index c948cabc..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_027.imageset/dropdown_loading_0013_\345\233\276\345\261\202-27.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_028.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_028.imageset/Contents.json
index f68db190..67e380c0 100644
--- a/ivwen/Images.xcassets/dropdown_loading_028.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_028.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0012_图层-28.png",
+      "filename" : "dropdown_0013_图层-28.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_028.imageset/dropdown_0013_\345\233\276\345\261\202-28.png" "b/ivwen/Images.xcassets/dropdown_loading_028.imageset/dropdown_0013_\345\233\276\345\261\202-28.png"
new file mode 100644
index 00000000..c22b16b8
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_028.imageset/dropdown_0013_\345\233\276\345\261\202-28.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_028.imageset/dropdown_loading_0012_\345\233\276\345\261\202-28.png" "b/ivwen/Images.xcassets/dropdown_loading_028.imageset/dropdown_loading_0012_\345\233\276\345\261\202-28.png"
deleted file mode 100644
index 4f1ba0e2..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_028.imageset/dropdown_loading_0012_\345\233\276\345\261\202-28.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_029.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_029.imageset/Contents.json
index 123053f3..a1c92c7a 100644
--- a/ivwen/Images.xcassets/dropdown_loading_029.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_029.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0011_图层-29.png",
+      "filename" : "dropdown_0012_图层-29.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_029.imageset/dropdown_0012_\345\233\276\345\261\202-29.png" "b/ivwen/Images.xcassets/dropdown_loading_029.imageset/dropdown_0012_\345\233\276\345\261\202-29.png"
new file mode 100644
index 00000000..7bd2f890
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_029.imageset/dropdown_0012_\345\233\276\345\261\202-29.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_029.imageset/dropdown_loading_0011_\345\233\276\345\261\202-29.png" "b/ivwen/Images.xcassets/dropdown_loading_029.imageset/dropdown_loading_0011_\345\233\276\345\261\202-29.png"
deleted file mode 100644
index 88b7771e..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_029.imageset/dropdown_loading_0011_\345\233\276\345\261\202-29.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_03.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_03.imageset/Contents.json
index e19a786a..c4b21d5a 100644
--- a/ivwen/Images.xcassets/dropdown_loading_03.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_03.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0037_图层-3.png",
+      "filename" : "dropdown_0038_图层-3.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_03.imageset/dropdown_0038_\345\233\276\345\261\202-3.png" "b/ivwen/Images.xcassets/dropdown_loading_03.imageset/dropdown_0038_\345\233\276\345\261\202-3.png"
new file mode 100644
index 00000000..b6c840fd
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_03.imageset/dropdown_0038_\345\233\276\345\261\202-3.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_03.imageset/dropdown_loading_0037_\345\233\276\345\261\202-3.png" "b/ivwen/Images.xcassets/dropdown_loading_03.imageset/dropdown_loading_0037_\345\233\276\345\261\202-3.png"
deleted file mode 100644
index 673687f1..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_03.imageset/dropdown_loading_0037_\345\233\276\345\261\202-3.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_030.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_030.imageset/Contents.json
index 3766e467..bc876c90 100644
--- a/ivwen/Images.xcassets/dropdown_loading_030.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_030.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0010_图层-30.png",
+      "filename" : "dropdown_0011_图层-30.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_030.imageset/dropdown_0011_\345\233\276\345\261\202-30.png" "b/ivwen/Images.xcassets/dropdown_loading_030.imageset/dropdown_0011_\345\233\276\345\261\202-30.png"
new file mode 100644
index 00000000..548bf098
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_030.imageset/dropdown_0011_\345\233\276\345\261\202-30.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_030.imageset/dropdown_loading_0010_\345\233\276\345\261\202-30.png" "b/ivwen/Images.xcassets/dropdown_loading_030.imageset/dropdown_loading_0010_\345\233\276\345\261\202-30.png"
deleted file mode 100644
index 2175836e..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_030.imageset/dropdown_loading_0010_\345\233\276\345\261\202-30.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_031.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_031.imageset/Contents.json
index 4d950151..c3ad9bb8 100644
--- a/ivwen/Images.xcassets/dropdown_loading_031.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_031.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0009_图层-31.png",
+      "filename" : "dropdown_0010_图层-31.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_031.imageset/dropdown_0010_\345\233\276\345\261\202-31.png" "b/ivwen/Images.xcassets/dropdown_loading_031.imageset/dropdown_0010_\345\233\276\345\261\202-31.png"
new file mode 100644
index 00000000..aba233ab
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_031.imageset/dropdown_0010_\345\233\276\345\261\202-31.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_031.imageset/dropdown_loading_0009_\345\233\276\345\261\202-31.png" "b/ivwen/Images.xcassets/dropdown_loading_031.imageset/dropdown_loading_0009_\345\233\276\345\261\202-31.png"
deleted file mode 100644
index cea04ee0..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_031.imageset/dropdown_loading_0009_\345\233\276\345\261\202-31.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_032.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_032.imageset/Contents.json
index 05a78dec..a77dabc4 100644
--- a/ivwen/Images.xcassets/dropdown_loading_032.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_032.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0008_图层-32.png",
+      "filename" : "dropdown_0009_图层-32.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_032.imageset/dropdown_0009_\345\233\276\345\261\202-32.png" "b/ivwen/Images.xcassets/dropdown_loading_032.imageset/dropdown_0009_\345\233\276\345\261\202-32.png"
new file mode 100644
index 00000000..4deccbc3
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_032.imageset/dropdown_0009_\345\233\276\345\261\202-32.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_032.imageset/dropdown_loading_0008_\345\233\276\345\261\202-32.png" "b/ivwen/Images.xcassets/dropdown_loading_032.imageset/dropdown_loading_0008_\345\233\276\345\261\202-32.png"
deleted file mode 100644
index c9853859..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_032.imageset/dropdown_loading_0008_\345\233\276\345\261\202-32.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_033.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_033.imageset/Contents.json
index 7f498106..82dd401b 100644
--- a/ivwen/Images.xcassets/dropdown_loading_033.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_033.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0007_图层-33.png",
+      "filename" : "dropdown_0008_图层-33.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_033.imageset/dropdown_0008_\345\233\276\345\261\202-33.png" "b/ivwen/Images.xcassets/dropdown_loading_033.imageset/dropdown_0008_\345\233\276\345\261\202-33.png"
new file mode 100644
index 00000000..8d7ccb95
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_033.imageset/dropdown_0008_\345\233\276\345\261\202-33.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_033.imageset/dropdown_loading_0007_\345\233\276\345\261\202-33.png" "b/ivwen/Images.xcassets/dropdown_loading_033.imageset/dropdown_loading_0007_\345\233\276\345\261\202-33.png"
deleted file mode 100644
index 9277b712..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_033.imageset/dropdown_loading_0007_\345\233\276\345\261\202-33.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_034.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_034.imageset/Contents.json
index 5cee48ff..32da3827 100644
--- a/ivwen/Images.xcassets/dropdown_loading_034.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_034.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0006_图层-34.png",
+      "filename" : "dropdown_0007_图层-34.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_034.imageset/dropdown_0007_\345\233\276\345\261\202-34.png" "b/ivwen/Images.xcassets/dropdown_loading_034.imageset/dropdown_0007_\345\233\276\345\261\202-34.png"
new file mode 100644
index 00000000..77d8b9f5
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_034.imageset/dropdown_0007_\345\233\276\345\261\202-34.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_034.imageset/dropdown_loading_0006_\345\233\276\345\261\202-34.png" "b/ivwen/Images.xcassets/dropdown_loading_034.imageset/dropdown_loading_0006_\345\233\276\345\261\202-34.png"
deleted file mode 100644
index 1fe7e0f3..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_034.imageset/dropdown_loading_0006_\345\233\276\345\261\202-34.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_035.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_035.imageset/Contents.json
index 9fdba8c1..5c4ea2ab 100644
--- a/ivwen/Images.xcassets/dropdown_loading_035.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_035.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0005_图层-35.png",
+      "filename" : "dropdown_0006_图层-35.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_035.imageset/dropdown_0006_\345\233\276\345\261\202-35.png" "b/ivwen/Images.xcassets/dropdown_loading_035.imageset/dropdown_0006_\345\233\276\345\261\202-35.png"
new file mode 100644
index 00000000..6b4ccfec
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_035.imageset/dropdown_0006_\345\233\276\345\261\202-35.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_035.imageset/dropdown_loading_0005_\345\233\276\345\261\202-35.png" "b/ivwen/Images.xcassets/dropdown_loading_035.imageset/dropdown_loading_0005_\345\233\276\345\261\202-35.png"
deleted file mode 100644
index 9b40f2d7..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_035.imageset/dropdown_loading_0005_\345\233\276\345\261\202-35.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_036.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_036.imageset/Contents.json
index 5b26704f..4f4e8b6a 100644
--- a/ivwen/Images.xcassets/dropdown_loading_036.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_036.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0004_图层-36.png",
+      "filename" : "dropdown_0005_图层-36.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_036.imageset/dropdown_0005_\345\233\276\345\261\202-36.png" "b/ivwen/Images.xcassets/dropdown_loading_036.imageset/dropdown_0005_\345\233\276\345\261\202-36.png"
new file mode 100644
index 00000000..9a9d2b77
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_036.imageset/dropdown_0005_\345\233\276\345\261\202-36.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_036.imageset/dropdown_loading_0004_\345\233\276\345\261\202-36.png" "b/ivwen/Images.xcassets/dropdown_loading_036.imageset/dropdown_loading_0004_\345\233\276\345\261\202-36.png"
deleted file mode 100644
index f7c5294b..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_036.imageset/dropdown_loading_0004_\345\233\276\345\261\202-36.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_037.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_037.imageset/Contents.json
index c8ddb6f8..068e5cd0 100644
--- a/ivwen/Images.xcassets/dropdown_loading_037.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_037.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0003_图层-37.png",
+      "filename" : "dropdown_0004_图层-37.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_037.imageset/dropdown_0004_\345\233\276\345\261\202-37.png" "b/ivwen/Images.xcassets/dropdown_loading_037.imageset/dropdown_0004_\345\233\276\345\261\202-37.png"
new file mode 100644
index 00000000..aba11b28
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_037.imageset/dropdown_0004_\345\233\276\345\261\202-37.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_037.imageset/dropdown_loading_0003_\345\233\276\345\261\202-37.png" "b/ivwen/Images.xcassets/dropdown_loading_037.imageset/dropdown_loading_0003_\345\233\276\345\261\202-37.png"
deleted file mode 100644
index ccf2ee2d..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_037.imageset/dropdown_loading_0003_\345\233\276\345\261\202-37.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_038.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_038.imageset/Contents.json
index 9a153bd8..19441033 100644
--- a/ivwen/Images.xcassets/dropdown_loading_038.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_038.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0002_图层-38.png",
+      "filename" : "dropdown_0003_图层-38.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_038.imageset/dropdown_0003_\345\233\276\345\261\202-38.png" "b/ivwen/Images.xcassets/dropdown_loading_038.imageset/dropdown_0003_\345\233\276\345\261\202-38.png"
new file mode 100644
index 00000000..b31a647b
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_038.imageset/dropdown_0003_\345\233\276\345\261\202-38.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_038.imageset/dropdown_loading_0002_\345\233\276\345\261\202-38.png" "b/ivwen/Images.xcassets/dropdown_loading_038.imageset/dropdown_loading_0002_\345\233\276\345\261\202-38.png"
deleted file mode 100644
index ee0c928d..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_038.imageset/dropdown_loading_0002_\345\233\276\345\261\202-38.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_039.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_039.imageset/Contents.json
index 666c71c5..150f8198 100644
--- a/ivwen/Images.xcassets/dropdown_loading_039.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_039.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0001_图层-39.png",
+      "filename" : "dropdown_0002_图层-39.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_039.imageset/dropdown_0002_\345\233\276\345\261\202-39.png" "b/ivwen/Images.xcassets/dropdown_loading_039.imageset/dropdown_0002_\345\233\276\345\261\202-39.png"
new file mode 100644
index 00000000..d9fd82cf
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_039.imageset/dropdown_0002_\345\233\276\345\261\202-39.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_039.imageset/dropdown_loading_0001_\345\233\276\345\261\202-39.png" "b/ivwen/Images.xcassets/dropdown_loading_039.imageset/dropdown_loading_0001_\345\233\276\345\261\202-39.png"
deleted file mode 100644
index 9afa9ab5..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_039.imageset/dropdown_loading_0001_\345\233\276\345\261\202-39.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_04.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_04.imageset/Contents.json
index e5ac0d75..51237215 100644
--- a/ivwen/Images.xcassets/dropdown_loading_04.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_04.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0036_图层-4.png",
+      "filename" : "dropdown_0037_图层-4.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_04.imageset/dropdown_0037_\345\233\276\345\261\202-4.png" "b/ivwen/Images.xcassets/dropdown_loading_04.imageset/dropdown_0037_\345\233\276\345\261\202-4.png"
new file mode 100644
index 00000000..13f5a82c
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_04.imageset/dropdown_0037_\345\233\276\345\261\202-4.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_04.imageset/dropdown_loading_0036_\345\233\276\345\261\202-4.png" "b/ivwen/Images.xcassets/dropdown_loading_04.imageset/dropdown_loading_0036_\345\233\276\345\261\202-4.png"
deleted file mode 100644
index 697f73af..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_04.imageset/dropdown_loading_0036_\345\233\276\345\261\202-4.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_040.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_040.imageset/Contents.json
index 4d650e31..50013edc 100644
--- a/ivwen/Images.xcassets/dropdown_loading_040.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_040.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0000_图层-40.png",
+      "filename" : "dropdown_0001_图层-40.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_040.imageset/dropdown_0001_\345\233\276\345\261\202-40.png" "b/ivwen/Images.xcassets/dropdown_loading_040.imageset/dropdown_0001_\345\233\276\345\261\202-40.png"
new file mode 100644
index 00000000..e8750183
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_040.imageset/dropdown_0001_\345\233\276\345\261\202-40.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_040.imageset/dropdown_loading_0000_\345\233\276\345\261\202-40.png" "b/ivwen/Images.xcassets/dropdown_loading_040.imageset/dropdown_loading_0000_\345\233\276\345\261\202-40.png"
deleted file mode 100644
index ca802947..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_040.imageset/dropdown_loading_0000_\345\233\276\345\261\202-40.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_041.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_041.imageset/Contents.json
index bfb4fdbb..8f86bda6 100644
--- a/ivwen/Images.xcassets/dropdown_loading_041.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_041.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_041.png",
+      "filename" : "dropdown_0000_图层-41.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_041.imageset/dropdown_0000_\345\233\276\345\261\202-41.png" "b/ivwen/Images.xcassets/dropdown_loading_041.imageset/dropdown_0000_\345\233\276\345\261\202-41.png"
new file mode 100644
index 00000000..7a76adf0
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_041.imageset/dropdown_0000_\345\233\276\345\261\202-41.png" differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_041.imageset/dropdown_loading_041.png b/ivwen/Images.xcassets/dropdown_loading_041.imageset/dropdown_loading_041.png
deleted file mode 100644
index 8ac76b3b..00000000
Binary files a/ivwen/Images.xcassets/dropdown_loading_041.imageset/dropdown_loading_041.png and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_05.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_05.imageset/Contents.json
index 9af98584..9e14357a 100644
--- a/ivwen/Images.xcassets/dropdown_loading_05.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_05.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0035_图层-5.png",
+      "filename" : "dropdown_0036_图层-5.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_05.imageset/dropdown_0036_\345\233\276\345\261\202-5.png" "b/ivwen/Images.xcassets/dropdown_loading_05.imageset/dropdown_0036_\345\233\276\345\261\202-5.png"
new file mode 100644
index 00000000..44c13306
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_05.imageset/dropdown_0036_\345\233\276\345\261\202-5.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_05.imageset/dropdown_loading_0035_\345\233\276\345\261\202-5.png" "b/ivwen/Images.xcassets/dropdown_loading_05.imageset/dropdown_loading_0035_\345\233\276\345\261\202-5.png"
deleted file mode 100644
index d2fa6432..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_05.imageset/dropdown_loading_0035_\345\233\276\345\261\202-5.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_06.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_06.imageset/Contents.json
index bda9d2a9..515374e0 100644
--- a/ivwen/Images.xcassets/dropdown_loading_06.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_06.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0034_图层-6.png",
+      "filename" : "dropdown_0035_图层-6.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_06.imageset/dropdown_0035_\345\233\276\345\261\202-6.png" "b/ivwen/Images.xcassets/dropdown_loading_06.imageset/dropdown_0035_\345\233\276\345\261\202-6.png"
new file mode 100644
index 00000000..488cb7a2
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_06.imageset/dropdown_0035_\345\233\276\345\261\202-6.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_06.imageset/dropdown_loading_0034_\345\233\276\345\261\202-6.png" "b/ivwen/Images.xcassets/dropdown_loading_06.imageset/dropdown_loading_0034_\345\233\276\345\261\202-6.png"
deleted file mode 100644
index 564a8015..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_06.imageset/dropdown_loading_0034_\345\233\276\345\261\202-6.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_07.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_07.imageset/Contents.json
index 44235283..7957d2b4 100644
--- a/ivwen/Images.xcassets/dropdown_loading_07.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_07.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0033_图层-7.png",
+      "filename" : "dropdown_0034_图层-7.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_07.imageset/dropdown_0034_\345\233\276\345\261\202-7.png" "b/ivwen/Images.xcassets/dropdown_loading_07.imageset/dropdown_0034_\345\233\276\345\261\202-7.png"
new file mode 100644
index 00000000..1f3836e0
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_07.imageset/dropdown_0034_\345\233\276\345\261\202-7.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_07.imageset/dropdown_loading_0033_\345\233\276\345\261\202-7.png" "b/ivwen/Images.xcassets/dropdown_loading_07.imageset/dropdown_loading_0033_\345\233\276\345\261\202-7.png"
deleted file mode 100644
index 5a5d4326..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_07.imageset/dropdown_loading_0033_\345\233\276\345\261\202-7.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_08.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_08.imageset/Contents.json
index 763463d9..6b32c5a4 100644
--- a/ivwen/Images.xcassets/dropdown_loading_08.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_08.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0032_图层-8.png",
+      "filename" : "dropdown_0033_图层-8.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_08.imageset/dropdown_0033_\345\233\276\345\261\202-8.png" "b/ivwen/Images.xcassets/dropdown_loading_08.imageset/dropdown_0033_\345\233\276\345\261\202-8.png"
new file mode 100644
index 00000000..bbbcb618
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_08.imageset/dropdown_0033_\345\233\276\345\261\202-8.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_08.imageset/dropdown_loading_0032_\345\233\276\345\261\202-8.png" "b/ivwen/Images.xcassets/dropdown_loading_08.imageset/dropdown_loading_0032_\345\233\276\345\261\202-8.png"
deleted file mode 100644
index 1495c008..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_08.imageset/dropdown_loading_0032_\345\233\276\345\261\202-8.png" and /dev/null differ
diff --git a/ivwen/Images.xcassets/dropdown_loading_09.imageset/Contents.json b/ivwen/Images.xcassets/dropdown_loading_09.imageset/Contents.json
index ca7e6fae..03fc76c0 100644
--- a/ivwen/Images.xcassets/dropdown_loading_09.imageset/Contents.json
+++ b/ivwen/Images.xcassets/dropdown_loading_09.imageset/Contents.json
@@ -6,7 +6,7 @@
     },
     {
       "idiom" : "universal",
-      "filename" : "dropdown_loading_0031_图层-9.png",
+      "filename" : "dropdown_0032_图层-9.png",
       "scale" : "2x"
     },
     {
diff --git "a/ivwen/Images.xcassets/dropdown_loading_09.imageset/dropdown_0032_\345\233\276\345\261\202-9.png" "b/ivwen/Images.xcassets/dropdown_loading_09.imageset/dropdown_0032_\345\233\276\345\261\202-9.png"
new file mode 100644
index 00000000..5ad137fd
Binary files /dev/null and "b/ivwen/Images.xcassets/dropdown_loading_09.imageset/dropdown_0032_\345\233\276\345\261\202-9.png" differ
diff --git "a/ivwen/Images.xcassets/dropdown_loading_09.imageset/dropdown_loading_0031_\345\233\276\345\261\202-9.png" "b/ivwen/Images.xcassets/dropdown_loading_09.imageset/dropdown_loading_0031_\345\233\276\345\261\202-9.png"
deleted file mode 100644
index 2ac05b2e..00000000
Binary files "a/ivwen/Images.xcassets/dropdown_loading_09.imageset/dropdown_loading_0031_\345\233\276\345\261\202-9.png" and /dev/null differ
diff --git a/ivwen/NotificationService/Info.plist b/ivwen/NotificationService/Info.plist
index d74d4a95..4687b88e 100644
--- a/ivwen/NotificationService/Info.plist
+++ b/ivwen/NotificationService/Info.plist
@@ -17,9 +17,9 @@
 	<key>CFBundlePackageType</key>
 	<string>XPC!</string>
 	<key>CFBundleShortVersionString</key>
-	<string>4.1.4</string>
+	<string>4.1.2</string>
 	<key>CFBundleVersion</key>
-	<string>4.1.4.1</string>
+	<string>4.1.2.4</string>
 	<key>NSExtension</key>
 	<dict>
 		<key>NSExtensionPointIdentifier</key>
diff --git a/ivwen/ivwen.xcodeproj/project.pbxproj b/ivwen/ivwen.xcodeproj/project.pbxproj
index c3733061..70e76434 100644
--- a/ivwen/ivwen.xcodeproj/project.pbxproj
+++ b/ivwen/ivwen.xcodeproj/project.pbxproj
@@ -20,12 +20,11 @@
 		9B0109EA1EF3CB880099EEB2 /* SearchArticleHeadTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0109E81EF3CB880099EEB2 /* SearchArticleHeadTableViewCell.m */; };
 		9B0109EB1EF3CB880099EEB2 /* SearchArticleHeadTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9B0109E91EF3CB880099EEB2 /* SearchArticleHeadTableViewCell.xib */; };
 		9B031D8F1EF0D7D200FE1F78 /* WebViewWarningView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B031D8E1EF0D7D200FE1F78 /* WebViewWarningView.m */; };
-		9B0DD5151F00EFCE00251DA8 /* TopicListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B0DD5131F00EFCE00251DA8 /* TopicListViewController.swift */; };
-		9B0DD5161F00EFCE00251DA8 /* TopicListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9B0DD5141F00EFCE00251DA8 /* TopicListViewController.xib */; };
-		9B0DD5191F0104A600251DA8 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B0DD5181F0104A600251DA8 /* File.swift */; };
 		9B0FEC301E4DCC5C008D509A /* LYSideslipCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0FEC2F1E4DCC5C008D509A /* LYSideslipCell.m */; };
 		9B104B491DA8DAEB00662053 /* UILabel+Number.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B104B481DA8DAEB00662053 /* UILabel+Number.m */; };
 		9B111D321EF81D04006286A5 /* libstdc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B29DE9A1E8A664000876F58 /* libstdc++.tbd */; };
+		9B15E7951F302EA7004EFA88 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B15E7941F302EA7004EFA88 /* StoreKit.framework */; };
+		9B15E79A1F330B37004EFA88 /* GTMBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B15E7981F330B37004EFA88 /* GTMBase64.m */; };
 		9B17D8BF1E0CD82C003622E6 /* imService_1.json in Resources */ = {isa = PBXBuildFile; fileRef = 9B17D8BE1E0CD82C003622E6 /* imService_1.json */; };
 		9B17D8C21E0CF4F5003622E6 /* SatisfactionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B17D8C11E0CF4F5003622E6 /* SatisfactionViewController.m */; };
 		9B17D8CA1E0CF915003622E6 /* CWStarRateView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B17D8C61E0CF915003622E6 /* CWStarRateView.m */; };
@@ -34,7 +33,7 @@
 		9B183AEA1E83B565003C136E /* WKWebView+WLContentCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B183AE91E83B565003C136E /* WKWebView+WLContentCapture.m */; };
 		9B183AED1E83BF04003C136E /* AppManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B183AEC1E83BF04003C136E /* AppManager.m */; };
 		9B183AF01E83EF06003C136E /* UIWebView+ToFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B183AEF1E83EF06003C136E /* UIWebView+ToFile.m */; };
-		9B1C13B11EFA8840004B4190 /* servererror_21.json in Resources */ = {isa = PBXBuildFile; fileRef = 9B1C13B01EFA8840004B4190 /* servererror_21.json */; };
+		9B1C13B31EFA8880004B4190 /* categoryinfoV2_21.json in Resources */ = {isa = PBXBuildFile; fileRef = 9B1C13B21EFA8880004B4190 /* categoryinfoV2_21.json */; };
 		9B1C13B51EFBD04A004B4190 /* HyphenateLite.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B111D251EF7FE73006286A5 /* HyphenateLite.framework */; };
 		9B1C13B61EFBD04A004B4190 /* HyphenateLite.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9B111D251EF7FE73006286A5 /* HyphenateLite.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		9B1FF8531DC0AD1100DA3C50 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B1FF8521DC0AD1100DA3C50 /* Accelerate.framework */; };
@@ -101,8 +100,6 @@
 		9B3999871DC0DFEF00C03BB8 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B3999861DC0DFEF00C03BB8 /* CoreBluetooth.framework */; };
 		9B39A1BF1E49A899008F700E /* ZXAI013x0xDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B39A1BE1E49A899008F700E /* ZXAI013x0xDecoder.m */; };
 		9B3AFFC61DACB637000E0BFD /* jQuery.js in Resources */ = {isa = PBXBuildFile; fileRef = 9B3AFFC51DACB637000E0BFD /* jQuery.js */; };
-		9B4AA6231DC83AEC00244657 /* libMobClickLibrary.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B4AA6221DC83AEC00244657 /* libMobClickLibrary.a */; };
-		9B4AA6271DC83B0300244657 /* libUMessage_Sdk_1.1.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B4AA6261DC83B0300244657 /* libUMessage_Sdk_1.1.0.a */; };
 		9B4AA62D1DC83B4800244657 /* libALBB_OSS_IOS_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B4AA62C1DC83B4800244657 /* libALBB_OSS_IOS_SDK.a */; };
 		9B4B5C581E13E13A009E69D3 /* MPLinkTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4B5C571E13E13A009E69D3 /* MPLinkTextView.m */; };
 		9B4F5B5A1D6FEE7700A0750C /* CLTreeView_LEVEL0_Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4F5B2E1D6FEE7700A0750C /* CLTreeView_LEVEL0_Cell.m */; };
@@ -241,10 +238,19 @@
 		9B692BC31DAE812D00CA9EDE /* UIView+SetFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B692BC21DAE812D00CA9EDE /* UIView+SetFrame.m */; };
 		9B6F0A151D927592007852CD /* CMSClassView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6F0A141D927592007852CD /* CMSClassView.m */; };
 		9B6F0A1E1D929398007852CD /* NSTimer+Addition.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6F0A1D1D929398007852CD /* NSTimer+Addition.m */; };
+		9B7090231D8FB7D0002E2D94 /* TZAssetCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7090111D8FB7D0002E2D94 /* TZAssetCell.m */; };
+		9B7090241D8FB7D0002E2D94 /* TZAssetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7090131D8FB7D0002E2D94 /* TZAssetModel.m */; };
+		9B7090251D8FB7D0002E2D94 /* TZImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7090151D8FB7D0002E2D94 /* TZImageManager.m */; };
+		9B7090261D8FB7D0002E2D94 /* TZImagePickerController.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 9B7090161D8FB7D0002E2D94 /* TZImagePickerController.bundle */; };
+		9B7090271D8FB7D0002E2D94 /* TZImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7090181D8FB7D0002E2D94 /* TZImagePickerController.m */; };
+		9B7090281D8FB7D0002E2D94 /* TZPhotoPickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B70901A1D8FB7D0002E2D94 /* TZPhotoPickerController.m */; };
+		9B7090291D8FB7D0002E2D94 /* TZPhotoPreviewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B70901C1D8FB7D0002E2D94 /* TZPhotoPreviewCell.m */; };
+		9B70902A1D8FB7D0002E2D94 /* TZPhotoPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B70901E1D8FB7D0002E2D94 /* TZPhotoPreviewController.m */; };
+		9B70902B1D8FB7D0002E2D94 /* TZVideoPlayerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7090201D8FB7D0002E2D94 /* TZVideoPlayerController.m */; };
+		9B70902C1D8FB7D0002E2D94 /* UIView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7090221D8FB7D0002E2D94 /* UIView+Layout.m */; };
 		9B72921C1D963E0600616890 /* RecommandFeedLIstView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B72921B1D963E0600616890 /* RecommandFeedLIstView.m */; };
 		9B72921E1D963EFD00616890 /* RecommandFeedLIstView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9B72921D1D963EFD00616890 /* RecommandFeedLIstView.xib */; };
 		9B74DFF11DDEF6F2008FE7F3 /* MPGuidView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B74DFF01DDEF6F2008FE7F3 /* MPGuidView.m */; };
-		9B7AAE4F1F5FA17800278A23 /* categoryinfoV2_21.json in Resources */ = {isa = PBXBuildFile; fileRef = 9B7AAE4E1F5FA17800278A23 /* categoryinfoV2_21.json */; };
 		9B7C1C481D8FCCB500809687 /* NSString+extend.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7C1C471D8FCCB500809687 /* NSString+extend.m */; };
 		9B7E840C1D87D08900B6F9F4 /* NSCoder+TypeCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7E84091D87D08900B6F9F4 /* NSCoder+TypeCheck.m */; };
 		9B7E840D1D87D08900B6F9F4 /* NSDictionary+TypeCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7E840B1D87D08900B6F9F4 /* NSDictionary+TypeCheck.m */; };
@@ -451,7 +457,6 @@
 		9B88CAA81D7FBC3C00C59D87 /* libicucore.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B88CAA71D7FBC3C00C59D87 /* libicucore.tbd */; };
 		9B88CAAA1D7FBC4400C59D87 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B88CAA91D7FBC4400C59D87 /* libz.tbd */; };
 		9B88CAAC1D7FBEF100C59D87 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9B88CAAB1D7FBEF100C59D87 /* Images.xcassets */; };
-		9B8A92FB1E1BE14D001AE44E /* templateinfo_rect_1.json in Resources */ = {isa = PBXBuildFile; fileRef = 9B8A92FA1E1BE14D001AE44E /* templateinfo_rect_1.json */; };
 		9B8C926B1E8B5A1A00885A40 /* libpingpp+up.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B8C926A1E8B5A1A00885A40 /* libpingpp+up.a */; };
 		9B8DE16F1EDFFB84009B58DF /* ShareAfterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8DE16E1EDFFB84009B58DF /* ShareAfterView.m */; };
 		9B9219D71E221F31006436F4 /* localerror.json in Resources */ = {isa = PBXBuildFile; fileRef = 9B9219D61E221F31006436F4 /* localerror.json */; };
@@ -583,6 +588,8 @@
 		9BC8A07F1E96515000096629 /* ImageEnlargeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9BC8A07E1E96515000096629 /* ImageEnlargeViewController.xib */; };
 		9BCAB4A51E65809B00ED1F86 /* NSString+Category.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCAB4A41E65809B00ED1F86 /* NSString+Category.m */; };
 		9BCB1A3D1D99241C006AF4CF /* RecommendFeedHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCB1A3C1D99241C006AF4CF /* RecommendFeedHeadView.m */; };
+		9BCCD9DD1F42FFFC00947F34 /* servererror_29.json in Resources */ = {isa = PBXBuildFile; fileRef = 9BCCD9DC1F42FFFC00947F34 /* servererror_29.json */; };
+		9BCCD9DF1F443A2E00947F34 /* templateinfo_rect_89.json in Resources */ = {isa = PBXBuildFile; fileRef = 9BCCD9DE1F443A2E00947F34 /* templateinfo_rect_89.json */; };
 		9BD3FAF21EF8D455005CA4E2 /* WebP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BD3FAF11EF8D455005CA4E2 /* WebP.framework */; };
 		9BDAC74B1EE7A89300F1F198 /* MPShareSuccessPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDAC74A1EE7A89300F1F198 /* MPShareSuccessPopView.m */; };
 		9BDF1EEE1DB35CD8000D3D96 /* UIScrollView+_DScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF1EED1DB35CD8000D3D96 /* UIScrollView+_DScrollView.m */; };
@@ -963,6 +970,7 @@
 		F22445261EE100CB00A8655E /* SettingCategoryTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F22445241EE100CB00A8655E /* SettingCategoryTableViewCell.m */; };
 		F22445271EE100CB00A8655E /* SettingCategoryTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F22445251EE100CB00A8655E /* SettingCategoryTableViewCell.xib */; };
 		F224452A1EE1646400A8655E /* MineCustomMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = F22445291EE1646400A8655E /* MineCustomMenu.m */; };
+		F241E0931F3D551400B50A12 /* UMMobClick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F241E0921F3D551400B50A12 /* UMMobClick.framework */; };
 		F25ABEE71E79229100BE68B2 /* CustomMoveCellTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = F25ABEE61E79229100BE68B2 /* CustomMoveCellTableView.m */; };
 		F25AF0931E09205000DA2B73 /* ClassificationTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F25AF0911E09205000DA2B73 /* ClassificationTableViewCell.m */; };
 		F25AF0941E09205000DA2B73 /* ClassificationTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F25AF0921E09205000DA2B73 /* ClassificationTableViewCell.xib */; };
@@ -1011,21 +1019,12 @@
 		F28669FC1F0E35E10015FE3F /* HandleOpenURL.m in Sources */ = {isa = PBXBuildFile; fileRef = F28669FB1F0E35E10015FE3F /* HandleOpenURL.m */; };
 		F287B2D01E2FA2F3000B98D7 /* PushTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = F287B2CF1E2FA2F3000B98D7 /* PushTransition.m */; };
 		F287B2D31E2FA338000B98D7 /* PopTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = F287B2D21E2FA338000B98D7 /* PopTransition.m */; };
-		F2928D681F5EE1BB003FA590 /* TZAssetCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F2928D561F5EE1BB003FA590 /* TZAssetCell.m */; };
-		F2928D691F5EE1BB003FA590 /* TZAssetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = F2928D581F5EE1BB003FA590 /* TZAssetModel.m */; };
-		F2928D6A1F5EE1BB003FA590 /* TZImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F2928D5A1F5EE1BB003FA590 /* TZImageManager.m */; };
-		F2928D6B1F5EE1BB003FA590 /* TZImagePickerController.bundle in Resources */ = {isa = PBXBuildFile; fileRef = F2928D5B1F5EE1BB003FA590 /* TZImagePickerController.bundle */; };
-		F2928D6C1F5EE1BB003FA590 /* TZImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = F2928D5D1F5EE1BB003FA590 /* TZImagePickerController.m */; };
-		F2928D6D1F5EE1BB003FA590 /* TZPhotoPickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = F2928D5F1F5EE1BB003FA590 /* TZPhotoPickerController.m */; };
-		F2928D6E1F5EE1BB003FA590 /* TZPhotoPreviewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F2928D611F5EE1BB003FA590 /* TZPhotoPreviewCell.m */; };
-		F2928D6F1F5EE1BB003FA590 /* TZPhotoPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F2928D631F5EE1BB003FA590 /* TZPhotoPreviewController.m */; };
-		F2928D701F5EE1BB003FA590 /* TZVideoPlayerController.m in Sources */ = {isa = PBXBuildFile; fileRef = F2928D651F5EE1BB003FA590 /* TZVideoPlayerController.m */; };
-		F2928D711F5EE1BB003FA590 /* UIView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = F2928D671F5EE1BB003FA590 /* UIView+Layout.m */; };
 		F29D0DC11E34BA7700771F18 /* ScreenShotView.m in Sources */ = {isa = PBXBuildFile; fileRef = F29D0DC01E34BA7700771F18 /* ScreenShotView.m */; };
 		F2ACA3FB1EE7AB4500D34694 /* MineShareView.m in Sources */ = {isa = PBXBuildFile; fileRef = F2ACA3FA1EE7AB4500D34694 /* MineShareView.m */; };
 		F2AE1B451EF6B39F0016813F /* MJRefreshGifMeiPian.m in Sources */ = {isa = PBXBuildFile; fileRef = F2AE1B441EF6B39F0016813F /* MJRefreshGifMeiPian.m */; };
 		F2B239071E94D10E002BC7D2 /* FrontClippingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F2B239051E94D10E002BC7D2 /* FrontClippingViewController.m */; };
 		F2B239081E94D10E002BC7D2 /* FrontClippingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F2B239061E94D10E002BC7D2 /* FrontClippingViewController.xib */; };
+		F2BD3D361F3B0535007FE0B4 /* SFHFKeychainUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F2BD3D351F3B0535007FE0B4 /* SFHFKeychainUtils.m */; };
 		F2BF95791ECD6E1D003F80C1 /* WeakScriptMessageDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F2BF95781ECD6E1D003F80C1 /* WeakScriptMessageDelegate.m */; };
 		F2C151D31E49F5DF00D4059D /* BaseNavgationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F2C151D21E49F5DF00D4059D /* BaseNavgationViewController.m */; };
 		F2C997E21E47162100A76AEC /* BaseViewHelp.m in Sources */ = {isa = PBXBuildFile; fileRef = F2C997E11E47162100A76AEC /* BaseViewHelp.m */; };
@@ -1045,6 +1044,8 @@
 		F2E6462B1EA9F59200CC12F4 /* EditViewActionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F2E646291EA9F59200CC12F4 /* EditViewActionCell.xib */; };
 		F2E7B3291E2E18FD0068FF31 /* FriendDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F2E7B3281E2E18FD0068FF31 /* FriendDetailsViewController.m */; };
 		F2E9D87C1DF98D310060DAC3 /* FriendDetailsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F2E9D87B1DF98D310060DAC3 /* FriendDetailsTableViewCell.m */; };
+		F2E9EA591F69545A00BC94F2 /* AdvertTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F2E9EA571F69545A00BC94F2 /* AdvertTableViewCell.m */; };
+		F2E9EA5A1F69545A00BC94F2 /* AdvertTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F2E9EA581F69545A00BC94F2 /* AdvertTableViewCell.xib */; };
 		F2EF04521DFBEDD900AF72C5 /* BlackListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F2EF04511DFBEDD900AF72C5 /* BlackListViewController.m */; };
 		F2EF04551DFBF77100AF72C5 /* BlackListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F2EF04541DFBF77100AF72C5 /* BlackListTableViewCell.m */; };
 		F2F1423C1E022E85003B535C /* MusicTypedef.m in Sources */ = {isa = PBXBuildFile; fileRef = F2F1423B1E022E85003B535C /* MusicTypedef.m */; };
@@ -1113,16 +1114,16 @@
 		9B0109E91EF3CB880099EEB2 /* SearchArticleHeadTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchArticleHeadTableViewCell.xib; sourceTree = "<group>"; };
 		9B031D8D1EF0D7D200FE1F78 /* WebViewWarningView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewWarningView.h; sourceTree = "<group>"; };
 		9B031D8E1EF0D7D200FE1F78 /* WebViewWarningView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewWarningView.m; sourceTree = "<group>"; };
-		9B0DD5131F00EFCE00251DA8 /* TopicListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TopicListViewController.swift; sourceTree = "<group>"; };
-		9B0DD5141F00EFCE00251DA8 /* TopicListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TopicListViewController.xib; sourceTree = "<group>"; };
-		9B0DD5171F00F0F900251DA8 /* ivwen-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ivwen-Bridging-Header.h"; sourceTree = "<group>"; };
-		9B0DD5181F0104A600251DA8 /* File.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = "<group>"; };
 		9B0FEC2E1E4DCC5C008D509A /* LYSideslipCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LYSideslipCell.h; sourceTree = "<group>"; };
 		9B0FEC2F1E4DCC5C008D509A /* LYSideslipCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LYSideslipCell.m; sourceTree = "<group>"; };
 		9B104B471DA8DAEB00662053 /* UILabel+Number.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UILabel+Number.h"; sourceTree = "<group>"; };
 		9B104B481DA8DAEB00662053 /* UILabel+Number.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UILabel+Number.m"; sourceTree = "<group>"; };
 		9B111D251EF7FE73006286A5 /* HyphenateLite.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = HyphenateLite.framework; sourceTree = "<group>"; };
 		9B12120F1D8DC14900CC81EB /* ivwen.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ivwen.entitlements; sourceTree = "<group>"; };
+		9B15E7941F302EA7004EFA88 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
+		9B15E7971F330B37004EFA88 /* GTMBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMBase64.h; sourceTree = "<group>"; };
+		9B15E7981F330B37004EFA88 /* GTMBase64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMBase64.m; sourceTree = "<group>"; };
+		9B15E7991F330B37004EFA88 /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = "<group>"; };
 		9B17D8BE1E0CD82C003622E6 /* imService_1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = imService_1.json; sourceTree = "<group>"; };
 		9B17D8C01E0CF4F5003622E6 /* SatisfactionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SatisfactionViewController.h; sourceTree = "<group>"; };
 		9B17D8C11E0CF4F5003622E6 /* SatisfactionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SatisfactionViewController.m; sourceTree = "<group>"; };
@@ -1136,7 +1137,7 @@
 		9B183AEC1E83BF04003C136E /* AppManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppManager.m; sourceTree = "<group>"; };
 		9B183AEE1E83EF06003C136E /* UIWebView+ToFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIWebView+ToFile.h"; sourceTree = "<group>"; };
 		9B183AEF1E83EF06003C136E /* UIWebView+ToFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWebView+ToFile.m"; sourceTree = "<group>"; };
-		9B1C13B01EFA8840004B4190 /* servererror_21.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = servererror_21.json; sourceTree = "<group>"; };
+		9B1C13B21EFA8880004B4190 /* categoryinfoV2_21.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = categoryinfoV2_21.json; sourceTree = "<group>"; };
 		9B1FF8521DC0AD1100DA3C50 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
 		9B1FF8541DC0AD2200DA3C50 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
 		9B2027511DB603F3001DA6F4 /* QPSDKCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = QPSDKCore.framework; sourceTree = "<group>"; };
@@ -1248,8 +1249,6 @@
 		9B39A1BD1E49A899008F700E /* ZXAI013x0xDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZXAI013x0xDecoder.h; sourceTree = "<group>"; };
 		9B39A1BE1E49A899008F700E /* ZXAI013x0xDecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZXAI013x0xDecoder.m; sourceTree = "<group>"; };
 		9B3AFFC51DACB637000E0BFD /* jQuery.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = jQuery.js; sourceTree = "<group>"; };
-		9B4AA6221DC83AEC00244657 /* libMobClickLibrary.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libMobClickLibrary.a; sourceTree = "<group>"; };
-		9B4AA6261DC83B0300244657 /* libUMessage_Sdk_1.1.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libUMessage_Sdk_1.1.0.a; sourceTree = "<group>"; };
 		9B4AA62C1DC83B4800244657 /* libALBB_OSS_IOS_SDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libALBB_OSS_IOS_SDK.a; sourceTree = "<group>"; };
 		9B4B5C561E13E13A009E69D3 /* MPLinkTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPLinkTextView.h; sourceTree = "<group>"; };
 		9B4B5C571E13E13A009E69D3 /* MPLinkTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPLinkTextView.m; sourceTree = "<group>"; };
@@ -1504,12 +1503,30 @@
 		9B6F0A141D927592007852CD /* CMSClassView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMSClassView.m; sourceTree = "<group>"; };
 		9B6F0A1C1D929398007852CD /* NSTimer+Addition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSTimer+Addition.h"; sourceTree = "<group>"; };
 		9B6F0A1D1D929398007852CD /* NSTimer+Addition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSTimer+Addition.m"; sourceTree = "<group>"; };
+		9B7090101D8FB7D0002E2D94 /* TZAssetCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZAssetCell.h; sourceTree = "<group>"; };
+		9B7090111D8FB7D0002E2D94 /* TZAssetCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZAssetCell.m; sourceTree = "<group>"; };
+		9B7090121D8FB7D0002E2D94 /* TZAssetModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZAssetModel.h; sourceTree = "<group>"; };
+		9B7090131D8FB7D0002E2D94 /* TZAssetModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZAssetModel.m; sourceTree = "<group>"; };
+		9B7090141D8FB7D0002E2D94 /* TZImageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZImageManager.h; sourceTree = "<group>"; };
+		9B7090151D8FB7D0002E2D94 /* TZImageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZImageManager.m; sourceTree = "<group>"; };
+		9B7090161D8FB7D0002E2D94 /* TZImagePickerController.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = TZImagePickerController.bundle; sourceTree = "<group>"; };
+		9B7090171D8FB7D0002E2D94 /* TZImagePickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZImagePickerController.h; sourceTree = "<group>"; };
+		9B7090181D8FB7D0002E2D94 /* TZImagePickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZImagePickerController.m; sourceTree = "<group>"; };
+		9B7090191D8FB7D0002E2D94 /* TZPhotoPickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZPhotoPickerController.h; sourceTree = "<group>"; };
+		9B70901A1D8FB7D0002E2D94 /* TZPhotoPickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZPhotoPickerController.m; sourceTree = "<group>"; };
+		9B70901B1D8FB7D0002E2D94 /* TZPhotoPreviewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZPhotoPreviewCell.h; sourceTree = "<group>"; };
+		9B70901C1D8FB7D0002E2D94 /* TZPhotoPreviewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZPhotoPreviewCell.m; sourceTree = "<group>"; };
+		9B70901D1D8FB7D0002E2D94 /* TZPhotoPreviewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZPhotoPreviewController.h; sourceTree = "<group>"; };
+		9B70901E1D8FB7D0002E2D94 /* TZPhotoPreviewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZPhotoPreviewController.m; sourceTree = "<group>"; };
+		9B70901F1D8FB7D0002E2D94 /* TZVideoPlayerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZVideoPlayerController.h; sourceTree = "<group>"; };
+		9B7090201D8FB7D0002E2D94 /* TZVideoPlayerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZVideoPlayerController.m; sourceTree = "<group>"; };
+		9B7090211D8FB7D0002E2D94 /* UIView+Layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Layout.h"; sourceTree = "<group>"; };
+		9B7090221D8FB7D0002E2D94 /* UIView+Layout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Layout.m"; sourceTree = "<group>"; };
 		9B72921A1D963E0600616890 /* RecommandFeedLIstView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecommandFeedLIstView.h; sourceTree = "<group>"; };
 		9B72921B1D963E0600616890 /* RecommandFeedLIstView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecommandFeedLIstView.m; sourceTree = "<group>"; };
 		9B72921D1D963EFD00616890 /* RecommandFeedLIstView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RecommandFeedLIstView.xib; sourceTree = "<group>"; };
 		9B74DFEF1DDEF6F2008FE7F3 /* MPGuidView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPGuidView.h; sourceTree = "<group>"; };
 		9B74DFF01DDEF6F2008FE7F3 /* MPGuidView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPGuidView.m; sourceTree = "<group>"; };
-		9B7AAE4E1F5FA17800278A23 /* categoryinfoV2_21.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = categoryinfoV2_21.json; sourceTree = "<group>"; };
 		9B7C1C461D8FCCB500809687 /* NSString+extend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+extend.h"; sourceTree = "<group>"; };
 		9B7C1C471D8FCCB500809687 /* NSString+extend.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+extend.m"; sourceTree = "<group>"; };
 		9B7E84081D87D08900B6F9F4 /* NSCoder+TypeCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSCoder+TypeCheck.h"; sourceTree = "<group>"; };
@@ -1538,7 +1555,7 @@
 		9B80EAF41DC6E2F300BC969A /* AFURLSessionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFURLSessionManager.h; sourceTree = "<group>"; };
 		9B80EAF51DC6E2F300BC969A /* AFURLSessionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFURLSessionManager.m; sourceTree = "<group>"; };
 		9B88C6EF1D7EC60200C59D87 /* BrowseSelfViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BrowseSelfViewController.h; sourceTree = "<group>"; };
-		9B88C6F01D7EC60200C59D87 /* BrowseSelfViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BrowseSelfViewController.m; sourceTree = "<group>"; };
+		9B88C6F01D7EC60200C59D87 /* BrowseSelfViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = BrowseSelfViewController.m; sourceTree = "<group>"; };
 		9B88C6F11D7EC60200C59D87 /* BrowseSelfViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BrowseSelfViewController.xib; sourceTree = "<group>"; };
 		9B88C7061D7EC62900C59D87 /* ArticleSelectViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArticleSelectViewController.h; sourceTree = "<group>"; };
 		9B88C7071D7EC62900C59D87 /* ArticleSelectViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ArticleSelectViewController.m; sourceTree = "<group>"; };
@@ -1883,9 +1900,6 @@
 		9B88C9C61D7FB74F00C59D87 /* UIActionSheet+Blocks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIActionSheet+Blocks.m"; sourceTree = "<group>"; };
 		9B88C9C71D7FB74F00C59D87 /* UIAlertView+Blocks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIAlertView+Blocks.h"; sourceTree = "<group>"; };
 		9B88C9C81D7FB74F00C59D87 /* UIAlertView+Blocks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIAlertView+Blocks.m"; sourceTree = "<group>"; };
-		9B88C9CC1D7FB74F00C59D87 /* MobClick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MobClick.h; sourceTree = "<group>"; };
-		9B88C9CD1D7FB74F00C59D87 /* MobClickSocialAnalytics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MobClickSocialAnalytics.h; sourceTree = "<group>"; };
-		9B88C9E71D7FB74F00C59D87 /* UMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UMessage.h; sourceTree = "<group>"; };
 		9B88C9E91D7FB74F00C59D87 /* WSCoachMarksView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WSCoachMarksView.h; sourceTree = "<group>"; };
 		9B88C9EA1D7FB74F00C59D87 /* WSCoachMarksView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WSCoachMarksView.m; sourceTree = "<group>"; };
 		9B88CA991D7FB8E300C59D87 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
@@ -1898,7 +1912,6 @@
 		9B88CAA71D7FBC3C00C59D87 /* libicucore.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libicucore.tbd; path = usr/lib/libicucore.tbd; sourceTree = SDKROOT; };
 		9B88CAA91D7FBC4400C59D87 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
 		9B88CAAB1D7FBEF100C59D87 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
-		9B8A92FA1E1BE14D001AE44E /* templateinfo_rect_1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = templateinfo_rect_1.json; sourceTree = "<group>"; };
 		9B8C926A1E8B5A1A00885A40 /* libpingpp+up.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libpingpp+up.a"; sourceTree = "<group>"; };
 		9B8DE16D1EDFFB84009B58DF /* ShareAfterView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShareAfterView.h; sourceTree = "<group>"; };
 		9B8DE16E1EDFFB84009B58DF /* ShareAfterView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShareAfterView.m; sourceTree = "<group>"; };
@@ -2142,6 +2155,8 @@
 		9BCAB4A41E65809B00ED1F86 /* NSString+Category.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Category.m"; sourceTree = "<group>"; };
 		9BCB1A3B1D99241C006AF4CF /* RecommendFeedHeadView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecommendFeedHeadView.h; sourceTree = "<group>"; };
 		9BCB1A3C1D99241C006AF4CF /* RecommendFeedHeadView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecommendFeedHeadView.m; sourceTree = "<group>"; };
+		9BCCD9DC1F42FFFC00947F34 /* servererror_29.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = servererror_29.json; sourceTree = "<group>"; };
+		9BCCD9DE1F443A2E00947F34 /* templateinfo_rect_89.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = templateinfo_rect_89.json; sourceTree = "<group>"; };
 		9BD3FAF11EF8D455005CA4E2 /* WebP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebP.framework; sourceTree = "<group>"; };
 		9BDAC7491EE7A89300F1F198 /* MPShareSuccessPopView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPShareSuccessPopView.h; sourceTree = "<group>"; };
 		9BDAC74A1EE7A89300F1F198 /* MPShareSuccessPopView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPShareSuccessPopView.m; sourceTree = "<group>"; };
@@ -2907,6 +2922,7 @@
 		F22445251EE100CB00A8655E /* SettingCategoryTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingCategoryTableViewCell.xib; sourceTree = "<group>"; };
 		F22445281EE1646400A8655E /* MineCustomMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MineCustomMenu.h; sourceTree = "<group>"; };
 		F22445291EE1646400A8655E /* MineCustomMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MineCustomMenu.m; sourceTree = "<group>"; };
+		F241E0921F3D551400B50A12 /* UMMobClick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = UMMobClick.framework; sourceTree = "<group>"; };
 		F25ABEE51E79229100BE68B2 /* CustomMoveCellTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomMoveCellTableView.h; sourceTree = "<group>"; };
 		F25ABEE61E79229100BE68B2 /* CustomMoveCellTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomMoveCellTableView.m; sourceTree = "<group>"; };
 		F25AF0901E09205000DA2B73 /* ClassificationTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClassificationTableViewCell.h; sourceTree = "<group>"; };
@@ -3012,25 +3028,6 @@
 		F287B2CF1E2FA2F3000B98D7 /* PushTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PushTransition.m; sourceTree = "<group>"; };
 		F287B2D11E2FA338000B98D7 /* PopTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopTransition.h; sourceTree = "<group>"; };
 		F287B2D21E2FA338000B98D7 /* PopTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PopTransition.m; sourceTree = "<group>"; };
-		F2928D551F5EE1BB003FA590 /* TZAssetCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZAssetCell.h; sourceTree = "<group>"; };
-		F2928D561F5EE1BB003FA590 /* TZAssetCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZAssetCell.m; sourceTree = "<group>"; };
-		F2928D571F5EE1BB003FA590 /* TZAssetModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZAssetModel.h; sourceTree = "<group>"; };
-		F2928D581F5EE1BB003FA590 /* TZAssetModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZAssetModel.m; sourceTree = "<group>"; };
-		F2928D591F5EE1BB003FA590 /* TZImageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZImageManager.h; sourceTree = "<group>"; };
-		F2928D5A1F5EE1BB003FA590 /* TZImageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZImageManager.m; sourceTree = "<group>"; };
-		F2928D5B1F5EE1BB003FA590 /* TZImagePickerController.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = TZImagePickerController.bundle; sourceTree = "<group>"; };
-		F2928D5C1F5EE1BB003FA590 /* TZImagePickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZImagePickerController.h; sourceTree = "<group>"; };
-		F2928D5D1F5EE1BB003FA590 /* TZImagePickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZImagePickerController.m; sourceTree = "<group>"; };
-		F2928D5E1F5EE1BB003FA590 /* TZPhotoPickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZPhotoPickerController.h; sourceTree = "<group>"; };
-		F2928D5F1F5EE1BB003FA590 /* TZPhotoPickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZPhotoPickerController.m; sourceTree = "<group>"; };
-		F2928D601F5EE1BB003FA590 /* TZPhotoPreviewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZPhotoPreviewCell.h; sourceTree = "<group>"; };
-		F2928D611F5EE1BB003FA590 /* TZPhotoPreviewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZPhotoPreviewCell.m; sourceTree = "<group>"; };
-		F2928D621F5EE1BB003FA590 /* TZPhotoPreviewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZPhotoPreviewController.h; sourceTree = "<group>"; };
-		F2928D631F5EE1BB003FA590 /* TZPhotoPreviewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZPhotoPreviewController.m; sourceTree = "<group>"; };
-		F2928D641F5EE1BB003FA590 /* TZVideoPlayerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TZVideoPlayerController.h; sourceTree = "<group>"; };
-		F2928D651F5EE1BB003FA590 /* TZVideoPlayerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TZVideoPlayerController.m; sourceTree = "<group>"; };
-		F2928D661F5EE1BB003FA590 /* UIView+Layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Layout.h"; sourceTree = "<group>"; };
-		F2928D671F5EE1BB003FA590 /* UIView+Layout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Layout.m"; sourceTree = "<group>"; };
 		F29D0DBF1E34BA7700771F18 /* ScreenShotView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScreenShotView.h; sourceTree = "<group>"; };
 		F29D0DC01E34BA7700771F18 /* ScreenShotView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScreenShotView.m; sourceTree = "<group>"; };
 		F2ACA3F91EE7AB4500D34694 /* MineShareView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MineShareView.h; sourceTree = "<group>"; };
@@ -3040,6 +3037,8 @@
 		F2B239041E94D10E002BC7D2 /* FrontClippingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrontClippingViewController.h; sourceTree = "<group>"; };
 		F2B239051E94D10E002BC7D2 /* FrontClippingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FrontClippingViewController.m; sourceTree = "<group>"; };
 		F2B239061E94D10E002BC7D2 /* FrontClippingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FrontClippingViewController.xib; sourceTree = "<group>"; };
+		F2BD3D341F3B0535007FE0B4 /* SFHFKeychainUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SFHFKeychainUtils.h; sourceTree = "<group>"; };
+		F2BD3D351F3B0535007FE0B4 /* SFHFKeychainUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SFHFKeychainUtils.m; sourceTree = "<group>"; };
 		F2BF95771ECD6E1D003F80C1 /* WeakScriptMessageDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakScriptMessageDelegate.h; sourceTree = "<group>"; };
 		F2BF95781ECD6E1D003F80C1 /* WeakScriptMessageDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WeakScriptMessageDelegate.m; sourceTree = "<group>"; };
 		F2C151D11E49F5DF00D4059D /* BaseNavgationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseNavgationViewController.h; sourceTree = "<group>"; };
@@ -3071,6 +3070,9 @@
 		F2E9D8761DF984A30060DAC3 /* FriendDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FriendDetailsViewController.h; sourceTree = "<group>"; };
 		F2E9D87A1DF98D310060DAC3 /* FriendDetailsTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FriendDetailsTableViewCell.h; sourceTree = "<group>"; };
 		F2E9D87B1DF98D310060DAC3 /* FriendDetailsTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FriendDetailsTableViewCell.m; sourceTree = "<group>"; };
+		F2E9EA561F69545A00BC94F2 /* AdvertTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdvertTableViewCell.h; sourceTree = "<group>"; };
+		F2E9EA571F69545A00BC94F2 /* AdvertTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdvertTableViewCell.m; sourceTree = "<group>"; };
+		F2E9EA581F69545A00BC94F2 /* AdvertTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AdvertTableViewCell.xib; sourceTree = "<group>"; };
 		F2EF04501DFBEDD900AF72C5 /* BlackListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlackListViewController.h; sourceTree = "<group>"; };
 		F2EF04511DFBEDD900AF72C5 /* BlackListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BlackListViewController.m; sourceTree = "<group>"; };
 		F2EF04531DFBF77100AF72C5 /* BlackListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlackListTableViewCell.h; sourceTree = "<group>"; };
@@ -3105,7 +3107,7 @@
 				9B3999871DC0DFEF00C03BB8 /* CoreBluetooth.framework in Frameworks */,
 				9B3999851DC0DFDC00C03BB8 /* JavaScriptCore.framework in Frameworks */,
 				9B1FF8551DC0AD2200DA3C50 /* CoreGraphics.framework in Frameworks */,
-				9B4AA6231DC83AEC00244657 /* libMobClickLibrary.a in Frameworks */,
+				9B15E7951F302EA7004EFA88 /* StoreKit.framework in Frameworks */,
 				9B20280E1DB60C1F001DA6F4 /* libz.1.2.5.tbd in Frameworks */,
 				9B20280C1DB60B3F001DA6F4 /* Foundation.framework in Frameworks */,
 				9BD3FAF21EF8D455005CA4E2 /* WebP.framework in Frameworks */,
@@ -3130,12 +3132,12 @@
 				35B9CB091B0F71E60059FDE7 /* SystemConfiguration.framework in Frameworks */,
 				9B29DE8F1E8A651000876F58 /* AlipaySDK.framework in Frameworks */,
 				9B5340E71D6D97650065598A /* UIKit.framework in Frameworks */,
+				F241E0931F3D551400B50A12 /* UMMobClick.framework in Frameworks */,
 				9B554F431E4AEB7B000436E0 /* MOBFoundation.framework in Frameworks */,
 				9B2027521DB603F3001DA6F4 /* QPSDKCore.framework in Frameworks */,
 				37037E1C1D4CD7D3003E5E44 /* WebKit.framework in Frameworks */,
 				9B29DE981E8A651000876F58 /* libpingpp+one.a in Frameworks */,
 				9B29DE931E8A651000876F58 /* libPaymentControl.a in Frameworks */,
-				9B4AA6271DC83B0300244657 /* libUMessage_Sdk_1.1.0.a in Frameworks */,
 				375FA8D51C062DD100411EE0 /* Security.framework in Frameworks */,
 				3561BBE11B3D7A1E00E31616 /* MessageUI.framework in Frameworks */,
 				9B554F321E4AEB7A000436E0 /* ShareSDKConfigFile.framework in Frameworks */,
@@ -3236,6 +3238,16 @@
 			path = WebViewWarningView;
 			sourceTree = "<group>";
 		};
+		9B15E7961F330B2C004EFA88 /* GTMBase64 */ = {
+			isa = PBXGroup;
+			children = (
+				9B15E7971F330B37004EFA88 /* GTMBase64.h */,
+				9B15E7981F330B37004EFA88 /* GTMBase64.m */,
+				9B15E7991F330B37004EFA88 /* GTMDefines.h */,
+			);
+			path = GTMBase64;
+			sourceTree = "<group>";
+		};
 		9B17D8C31E0CF915003622E6 /* StarRatingView */ = {
 			isa = PBXGroup;
 			children = (
@@ -3286,8 +3298,6 @@
 				9B20D73E1EC99ED600586DBE /* DissertationListTableViewCell.h */,
 				9B20D73F1EC99ED600586DBE /* DissertationListTableViewCell.m */,
 				9B20D7401EC99ED600586DBE /* DissertationListTableViewCell.xib */,
-				9B0DD5131F00EFCE00251DA8 /* TopicListViewController.swift */,
-				9B0DD5141F00EFCE00251DA8 /* TopicListViewController.xib */,
 			);
 			path = DissertationList;
 			sourceTree = "<group>";
@@ -3468,6 +3478,7 @@
 		9B4F5AD51D6FE77700A0750C /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				9B15E7941F302EA7004EFA88 /* StoreKit.framework */,
 				9BD3FAF11EF8D455005CA4E2 /* WebP.framework */,
 				9B29DE9A1E8A664000876F58 /* libstdc++.tbd */,
 				9B2EF11D1E77F01500504575 /* UserNotifications.framework */,
@@ -3604,6 +3615,9 @@
 				F2AE1B441EF6B39F0016813F /* MJRefreshGifMeiPian.m */,
 				F2CA2EC51F13846E007FE8A2 /* CustomSegmentView.h */,
 				F2CA2EC61F13846E007FE8A2 /* CustomSegmentView.m */,
+				F2E9EA561F69545A00BC94F2 /* AdvertTableViewCell.h */,
+				F2E9EA571F69545A00BC94F2 /* AdvertTableViewCell.m */,
+				F2E9EA581F69545A00BC94F2 /* AdvertTableViewCell.xib */,
 			);
 			path = CommonView;
 			sourceTree = "<group>";
@@ -4026,6 +4040,32 @@
 			path = Discover/PosterViewController;
 			sourceTree = "<group>";
 		};
+		9B70900F1D8FB7D0002E2D94 /* TZImagePickerController */ = {
+			isa = PBXGroup;
+			children = (
+				9B7090101D8FB7D0002E2D94 /* TZAssetCell.h */,
+				9B7090111D8FB7D0002E2D94 /* TZAssetCell.m */,
+				9B7090121D8FB7D0002E2D94 /* TZAssetModel.h */,
+				9B7090131D8FB7D0002E2D94 /* TZAssetModel.m */,
+				9B7090141D8FB7D0002E2D94 /* TZImageManager.h */,
+				9B7090151D8FB7D0002E2D94 /* TZImageManager.m */,
+				9B7090161D8FB7D0002E2D94 /* TZImagePickerController.bundle */,
+				9B7090171D8FB7D0002E2D94 /* TZImagePickerController.h */,
+				9B7090181D8FB7D0002E2D94 /* TZImagePickerController.m */,
+				9B7090191D8FB7D0002E2D94 /* TZPhotoPickerController.h */,
+				9B70901A1D8FB7D0002E2D94 /* TZPhotoPickerController.m */,
+				9B70901B1D8FB7D0002E2D94 /* TZPhotoPreviewCell.h */,
+				9B70901C1D8FB7D0002E2D94 /* TZPhotoPreviewCell.m */,
+				9B70901D1D8FB7D0002E2D94 /* TZPhotoPreviewController.h */,
+				9B70901E1D8FB7D0002E2D94 /* TZPhotoPreviewController.m */,
+				9B70901F1D8FB7D0002E2D94 /* TZVideoPlayerController.h */,
+				9B7090201D8FB7D0002E2D94 /* TZVideoPlayerController.m */,
+				9B7090211D8FB7D0002E2D94 /* UIView+Layout.h */,
+				9B7090221D8FB7D0002E2D94 /* UIView+Layout.m */,
+			);
+			path = TZImagePickerController;
+			sourceTree = "<group>";
+		};
 		9B88C4631D7EB85200C59D87 /* controller */ = {
 			isa = PBXGroup;
 			children = (
@@ -4733,6 +4773,8 @@
 		9B88C8471D7FB5FA00C59D87 /* tools */ = {
 			isa = PBXGroup;
 			children = (
+				F2BD3D341F3B0535007FE0B4 /* SFHFKeychainUtils.h */,
+				F2BD3D351F3B0535007FE0B4 /* SFHFKeychainUtils.m */,
 				9B88C8481D7FB5FA00C59D87 /* Constants.h */,
 				9B692BAB1DAD35D000CA9EDE /* HRColorUtil.h */,
 				9B692BAC1DAD35D000CA9EDE /* HRColorUtil.m */,
@@ -4751,7 +4793,7 @@
 		9B88C8521D7FB74F00C59D87 /* 3rd */ = {
 			isa = PBXGroup;
 			children = (
-				F2928D541F5EE1BB003FA590 /* TZImagePickerController */,
+				9B15E7961F330B2C004EFA88 /* GTMBase64 */,
 				9BDFD1D21F27336A00B723DC /* Reachability */,
 				9BF6E4B51F1607F500C2AE80 /* HUProgressView */,
 				9BF6E4A21F15F5C100C2AE80 /* SVProgressHUD */,
@@ -4775,6 +4817,7 @@
 				9BBDA9451DC5E1DE00D3C51A /* Import */,
 				9BBDA88E1DC5BFCD00D3C51A /* Zhugeio */,
 				9BF5D87D1DAEB03F008C1F39 /* ZXingObjC */,
+				9B70900F1D8FB7D0002E2D94 /* TZImagePickerController */,
 				9B7E840E1D8800FA00B6F9F4 /* SSKeychain.h */,
 				9B7E840F1D8800FA00B6F9F4 /* SSKeychain.m */,
 				9B88C8551D7FB74F00C59D87 /* CLImageEditor */,
@@ -5193,31 +5236,11 @@
 		9B88C9C91D7FB74F00C59D87 /* UMeng */ = {
 			isa = PBXGroup;
 			children = (
-				9B88C9CA1D7FB74F00C59D87 /* UMAnalytics_Sdk_3.5.9 */,
-				9B88C9E51D7FB74F00C59D87 /* UMessage_Sdk_1.1.0 */,
+				F241E0921F3D551400B50A12 /* UMMobClick.framework */,
 			);
 			path = UMeng;
 			sourceTree = "<group>";
 		};
-		9B88C9CA1D7FB74F00C59D87 /* UMAnalytics_Sdk_3.5.9 */ = {
-			isa = PBXGroup;
-			children = (
-				9B4AA6221DC83AEC00244657 /* libMobClickLibrary.a */,
-				9B88C9CC1D7FB74F00C59D87 /* MobClick.h */,
-				9B88C9CD1D7FB74F00C59D87 /* MobClickSocialAnalytics.h */,
-			);
-			path = UMAnalytics_Sdk_3.5.9;
-			sourceTree = "<group>";
-		};
-		9B88C9E51D7FB74F00C59D87 /* UMessage_Sdk_1.1.0 */ = {
-			isa = PBXGroup;
-			children = (
-				9B4AA6261DC83B0300244657 /* libUMessage_Sdk_1.1.0.a */,
-				9B88C9E71D7FB74F00C59D87 /* UMessage.h */,
-			);
-			path = UMessage_Sdk_1.1.0;
-			sourceTree = "<group>";
-		};
 		9B88C9E81D7FB74F00C59D87 /* WSCoachMarksView */ = {
 			isa = PBXGroup;
 			children = (
@@ -5230,7 +5253,6 @@
 		9B88CA981D7FB8E300C59D87 /* AppDelegate */ = {
 			isa = PBXGroup;
 			children = (
-				9B0DD5171F00F0F900251DA8 /* ivwen-Bridging-Header.h */,
 				9B554F461E4AEC11000436E0 /* AppDelegate+ShareSDK.h */,
 				9B554F471E4AEC11000436E0 /* AppDelegate+ShareSDK.m */,
 				9BF42A6A1DF82F3800506EEC /* AppDelegate+EaseMob.h */,
@@ -5240,7 +5262,6 @@
 				9B88CA9B1D7FB8E300C59D87 /* Info.plist */,
 				9B88CA9C1D7FB8E300C59D87 /* main.m */,
 				9B88CA9D1D7FB8E300C59D87 /* PrefixHeader.pch */,
-				9B0DD5181F0104A600251DA8 /* File.swift */,
 			);
 			path = AppDelegate;
 			sourceTree = "<group>";
@@ -5652,11 +5673,11 @@
 		9BEB00821D72FC5F00DBB691 /* assets */ = {
 			isa = PBXGroup;
 			children = (
-				9B7AAE4E1F5FA17800278A23 /* categoryinfoV2_21.json */,
-				9B1C13B01EFA8840004B4190 /* servererror_21.json */,
+				9BCCD9DE1F443A2E00947F34 /* templateinfo_rect_89.json */,
+				9BCCD9DC1F42FFFC00947F34 /* servererror_29.json */,
+				9B1C13B21EFA8880004B4190 /* categoryinfoV2_21.json */,
 				9B5BEEAE1ED9502700E378C0 /* cities.json */,
 				9B9219D61E221F31006436F4 /* localerror.json */,
-				9B8A92FA1E1BE14D001AE44E /* templateinfo_rect_1.json */,
 				9B17D8BE1E0CD82C003622E6 /* imService_1.json */,
 				9B692BBF1DAE7F2600CA9EDE /* Poster_1.json */,
 				9B3AFFC51DACB637000E0BFD /* jQuery.js */,
@@ -7108,32 +7129,6 @@
 			path = ../../Category;
 			sourceTree = "<group>";
 		};
-		F2928D541F5EE1BB003FA590 /* TZImagePickerController */ = {
-			isa = PBXGroup;
-			children = (
-				F2928D551F5EE1BB003FA590 /* TZAssetCell.h */,
-				F2928D561F5EE1BB003FA590 /* TZAssetCell.m */,
-				F2928D571F5EE1BB003FA590 /* TZAssetModel.h */,
-				F2928D581F5EE1BB003FA590 /* TZAssetModel.m */,
-				F2928D591F5EE1BB003FA590 /* TZImageManager.h */,
-				F2928D5A1F5EE1BB003FA590 /* TZImageManager.m */,
-				F2928D5B1F5EE1BB003FA590 /* TZImagePickerController.bundle */,
-				F2928D5C1F5EE1BB003FA590 /* TZImagePickerController.h */,
-				F2928D5D1F5EE1BB003FA590 /* TZImagePickerController.m */,
-				F2928D5E1F5EE1BB003FA590 /* TZPhotoPickerController.h */,
-				F2928D5F1F5EE1BB003FA590 /* TZPhotoPickerController.m */,
-				F2928D601F5EE1BB003FA590 /* TZPhotoPreviewCell.h */,
-				F2928D611F5EE1BB003FA590 /* TZPhotoPreviewCell.m */,
-				F2928D621F5EE1BB003FA590 /* TZPhotoPreviewController.h */,
-				F2928D631F5EE1BB003FA590 /* TZPhotoPreviewController.m */,
-				F2928D641F5EE1BB003FA590 /* TZVideoPlayerController.h */,
-				F2928D651F5EE1BB003FA590 /* TZVideoPlayerController.m */,
-				F2928D661F5EE1BB003FA590 /* UIView+Layout.h */,
-				F2928D671F5EE1BB003FA590 /* UIView+Layout.m */,
-			);
-			path = TZImagePickerController;
-			sourceTree = "<group>";
-		};
 		F2E9D8631DF958BD0060DAC3 /* BlackListViewController */ = {
 			isa = PBXGroup;
 			children = (
@@ -7234,6 +7229,12 @@
 							com.apple.BackgroundModes = {
 								enabled = 1;
 							};
+							com.apple.InAppPurchase = {
+								enabled = 1;
+							};
+							com.apple.Keychain = {
+								enabled = 1;
+							};
 							com.apple.Push = {
 								enabled = 1;
 							};
@@ -7336,6 +7337,7 @@
 				F2CA2ED71F160F44007FE8A2 /* MusicSelectTableViewCell.xib in Resources */,
 				9B88C73F1D7EC65C00C59D87 /* VideoInsertViewController.xib in Resources */,
 				9B88C7351D7EC65500C59D87 /* TextEditViewController.xib in Resources */,
+				9BCCD9DD1F42FFFC00947F34 /* servererror_29.json in Resources */,
 				F268187E1ED824BC00D0F73A /* ContainAdminTableViewCell.xib in Resources */,
 				9BEB00981D72FC5F00DBB691 /* music_autoplay.js in Resources */,
 				F268185F1ED6BDF400D0F73A /* MineHeadView.xib in Resources */,
@@ -7346,7 +7348,6 @@
 				9B72921E1D963EFD00616890 /* RecommandFeedLIstView.xib in Resources */,
 				9B692BC01DAE7F2600CA9EDE /* Poster_1.json in Resources */,
 				9BBDA97C1DC5E2BD00D3C51A /* Info.plist in Resources */,
-				9B1C13B11EFA8840004B4190 /* servererror_21.json in Resources */,
 				9B20D7421EC99ED600586DBE /* DissertationListTableViewCell.xib in Resources */,
 				F2236F631E0D59D1000AAEAC /* UserTableViewCell.xib in Resources */,
 				9B554F441E4AEB7B000436E0 /* ShareSDK.bundle in Resources */,
@@ -7368,7 +7369,6 @@
 				9B88C6F31D7EC60200C59D87 /* BrowseSelfViewController.xib in Resources */,
 				9B88C70A1D7EC62900C59D87 /* ArticleSelectViewController.xib in Resources */,
 				9B88C7791D7ECA3300C59D87 /* CategorySelectViewController.xib in Resources */,
-				9B7AAE4F1F5FA17800278A23 /* categoryinfoV2_21.json in Resources */,
 				F2CA2ECF1F14CCD8007FE8A2 /* UploadMusicViewController.xib in Resources */,
 				9B88C79C1D7ECA5100C59D87 /* ExportPdfViewController.xib in Resources */,
 				9B88C8161D7FAEB800C59D87 /* SearchTableViewCell.xib in Resources */,
@@ -7381,6 +7381,7 @@
 				9B88C7F41D7ECB0C00C59D87 /* GeneralSettingTableViewCell.xib in Resources */,
 				9B554F3F1E4AEB7B000436E0 /* WeiboSDK.bundle in Resources */,
 				9B88C73D1D7EC65C00C59D87 /* VideoInsertViewCell.xib in Resources */,
+				9BCCD9DF1F443A2E00947F34 /* templateinfo_rect_89.json in Resources */,
 				9B88C7471D7EC66300C59D87 /* VideoSelectViewController.xib in Resources */,
 				9B4F5B691D6FEE7700A0750C /* MineViewCell.xib in Resources */,
 				F224451D1EDD895300A8655E /* SettingCheckViewController.xib in Resources */,
@@ -7415,12 +7416,12 @@
 				9B88C7A61D7ECA5E00C59D87 /* NoticeListViewController.xib in Resources */,
 				F22445221EDD8C1C00A8655E /* SettingCategoryViewController.xib in Resources */,
 				9B4F5B6C1D6FEE7700A0750C /* RewardListViewCell.xib in Resources */,
+				9B1C13B31EFA8880004B4190 /* categoryinfoV2_21.json in Resources */,
 				9B5BEEAF1ED9502700E378C0 /* cities.json in Resources */,
 				9BBDA8F01DC5C00500D3C51A /* snapshot_config.json in Resources */,
 				9B88C7FC1D7ECB0C00C59D87 /* UserInfoViewCell.xib in Resources */,
 				9B88C74E1D7EC66C00C59D87 /* GuideViewController.xib in Resources */,
 				9B241CE81ECF0DD3005D833D /* WithDrawListTableViewCell.xib in Resources */,
-				9B8A92FB1E1BE14D001AE44E /* templateinfo_rect_1.json in Resources */,
 				9B554F341E4AEB7A000436E0 /* ShareSDKUI.bundle in Resources */,
 				9B4F5B5F1D6FEE7700A0750C /* Level0_Cell.xib in Resources */,
 				9B88C78B1D7ECA4100C59D87 /* ShareSettingTableViewCell.xib in Resources */,
@@ -7428,7 +7429,6 @@
 				F2E6462B1EA9F59200CC12F4 /* EditViewActionCell.xib in Resources */,
 				9B88CA1D1D7FB74F00C59D87 /* MJRefresh.bundle in Resources */,
 				F26818931ED844D000D0F73A /* ContainSortTableViewCell.xib in Resources */,
-				9B0DD5161F00EFCE00251DA8 /* TopicListViewController.xib in Resources */,
 				F2D477171E82926A0096D797 /* EaseConversationCell.xib in Resources */,
 				9B88C8001D7ECB0C00C59D87 /* WebViewController.xib in Resources */,
 				9B88C71F1D7EC63900C59D87 /* EditViewCell.xib in Resources */,
@@ -7444,8 +7444,9 @@
 				9BEB009C1D72FC5F00DBB691 /* test-https.cer in Resources */,
 				9B241CE31ECF0D6F005D833D /* WithDrawListViewController.xib in Resources */,
 				9B88C78D1D7ECA4100C59D87 /* ShareSettingViewController.xib in Resources */,
+				F2E9EA5A1F69545A00BC94F2 /* AdvertTableViewCell.xib in Resources */,
+				9B7090261D8FB7D0002E2D94 /* TZImagePickerController.bundle in Resources */,
 				9BA041831E0BB74E009881F4 /* SearchHotMusicHeadView.xib in Resources */,
-				F2928D6B1F5EE1BB003FA590 /* TZImagePickerController.bundle in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -7532,10 +7533,11 @@
 				9B88CA9E1D7FB8E300C59D87 /* AppDelegate.m in Sources */,
 				9BF9A44E1E4886EB003ACBAB /* QPEffectLoadMoreCell.m in Sources */,
 				9BF42A071DF68DB100506EEC /* MWTapDetectingImageView.m in Sources */,
+				9B7090231D8FB7D0002E2D94 /* TZAssetCell.m in Sources */,
 				9B88C82C1D7FB2BE00C59D87 /* DBManager.m in Sources */,
+				9B70902C1D8FB7D0002E2D94 /* UIView+Layout.m in Sources */,
 				9B104B491DA8DAEB00662053 /* UILabel+Number.m in Sources */,
 				9B88C6F21D7EC60200C59D87 /* BrowseSelfViewController.m in Sources */,
-				F2928D6A1F5EE1BB003FA590 /* TZImageManager.m in Sources */,
 				9B88CA1C1D7FB74F00C59D87 /* MJRefreshStateHeader.m in Sources */,
 				F26782031E25F8D200A76F14 /* NewUserGuideView.m in Sources */,
 				9BBDA9501DC5E22000D3C51A /* QPLibrarayItem.m in Sources */,
@@ -7600,6 +7602,7 @@
 				9B5BEEAD1ED92EF900E378C0 /* CityCustomView.m in Sources */,
 				9BF429E01DF68DB100506EEC /* EaseUI.m in Sources */,
 				9BBDA9771DC5E2A700D3C51A /* JSONModelClassProperty.m in Sources */,
+				F2E9EA591F69545A00BC94F2 /* AdvertTableViewCell.m in Sources */,
 				9B88CA101D7FB74F00C59D87 /* MJRefreshBackFooter.m in Sources */,
 				9B692BB81DAE57D100CA9EDE /* ZXMovie.m in Sources */,
 				F26010B31EA763A700BAD23F /* FrontClipping_iPadViewController.m in Sources */,
@@ -7621,7 +7624,6 @@
 				F22445261EE100CB00A8655E /* SettingCategoryTableViewCell.m in Sources */,
 				9BF5DB451DAEB040008C1F39 /* ZXQRCodeFinderPatternFinder.m in Sources */,
 				9B2B64241DAB8D840077D420 /* CYRLayoutManager.m in Sources */,
-				F2928D6D1F5EE1BB003FA590 /* TZPhotoPickerController.m in Sources */,
 				9BBDA8EF1DC5C00500D3C51A /* ShakeGesture.m in Sources */,
 				F273A8581E8FA1DB00F5B5B2 /* UIImage+SRImageEffects.m in Sources */,
 				9BF42A551DF68DB100506EEC /* EaseConversationCell.m in Sources */,
@@ -7647,7 +7649,6 @@
 				9BF5DB1F1DAEB040008C1F39 /* ZXModulusPoly.m in Sources */,
 				9BF5DAF71DAEB040008C1F39 /* ZXRSSExpandedDecodedObject.m in Sources */,
 				9BF429E21DF68DB100506EEC /* EMAudioRecorderUtil.m in Sources */,
-				F2928D6E1F5EE1BB003FA590 /* TZPhotoPreviewCell.m in Sources */,
 				9BF5DABF1DAEB040008C1F39 /* ZXStringUtils.m in Sources */,
 				9BF42A4A1DF68DB100506EEC /* EaseBubbleView+Video.m in Sources */,
 				9BBDA91C1DC5C00500D3C51A /* ZGUIImageToNSDictionaryValueTransformer.m in Sources */,
@@ -7671,6 +7672,7 @@
 				F282E15A1E8CE95300FE5A60 /* TOActivityCroppedImageProvider.m in Sources */,
 				9BF42A1F1DF68DB100506EEC /* PSTCollectionViewData.m in Sources */,
 				F2C997E21E47162100A76AEC /* BaseViewHelp.m in Sources */,
+				9B70902A1D8FB7D0002E2D94 /* TZPhotoPreviewController.m in Sources */,
 				9B88CA611D7FB74F00C59D87 /* UIButton+WebCache.m in Sources */,
 				9B88C7A51D7ECA5E00C59D87 /* NoticeListViewController.m in Sources */,
 				9BF5DB2C1DAEB040008C1F39 /* ZXPDF417DetectorResult.m in Sources */,
@@ -7696,7 +7698,7 @@
 				9BBDA9DA1DC5E39500D3C51A /* QPRecordTipGuideView.m in Sources */,
 				9B241CE71ECF0DD3005D833D /* WithDrawListTableViewCell.m in Sources */,
 				9B88C7091D7EC62900C59D87 /* ArticleSelectViewController.m in Sources */,
-				F2928D711F5EE1BB003FA590 /* UIView+Layout.m in Sources */,
+				F2BD3D361F3B0535007FE0B4 /* SFHFKeychainUtils.m in Sources */,
 				9B88CA0F1D7FB74F00C59D87 /* MJRefreshAutoFooter.m in Sources */,
 				9B4F5B681D6FEE7700A0750C /* MineViewCell.m in Sources */,
 				9BF5DA9E1DAEB040008C1F39 /* ZXURIParsedResult.m in Sources */,
@@ -7704,6 +7706,7 @@
 				9B88CA151D7FB74F00C59D87 /* MJRefreshAutoNormalFooter.m in Sources */,
 				9B183AED1E83BF04003C136E /* AppManager.m in Sources */,
 				9B88C7481D7EC66300C59D87 /* VideoViewCell.m in Sources */,
+				9B15E79A1F330B37004EFA88 /* GTMBase64.m in Sources */,
 				9BF5DB411DAEB040008C1F39 /* ZXQRCodeAlignmentPattern.m in Sources */,
 				9B88C7101D7EC63100C59D87 /* CoverSelectViewCell.m in Sources */,
 				9BF6E4AD1F15F62200C2AE80 /* SVIndefiniteAnimatedView.m in Sources */,
@@ -7711,6 +7714,7 @@
 				F2E6462A1EA9F59200CC12F4 /* EditViewActionCell.m in Sources */,
 				9BBDA90F1DC5C00500D3C51A /* ZGObjectSelector.m in Sources */,
 				9BF5DAA51DAEB040008C1F39 /* ZXWifiParsedResult.m in Sources */,
+				9B7090291D8FB7D0002E2D94 /* TZPhotoPreviewCell.m in Sources */,
 				F268185E1ED6BDF400D0F73A /* MineHeadView.m in Sources */,
 				9B6015C31D867E1F002608BF /* NSMutableDictionary+SetObj.m in Sources */,
 				9BF5DB521DAEB040008C1F39 /* ZXMultiFormatWriter.m in Sources */,
@@ -7727,6 +7731,7 @@
 				9BC43C911E03B7C400B9D26B /* UINavigationBar+Background.m in Sources */,
 				9B561D881E3851C000DA5AE3 /* QNHosts.m in Sources */,
 				9B88C7B51D7ECAB400C59D87 /* RewardListViewController.m in Sources */,
+				9B7090251D8FB7D0002E2D94 /* TZImageManager.m in Sources */,
 				9BBDA90B1DC5C00500D3C51A /* ZGEventBinding.m in Sources */,
 				9BBDA9EE1DC5E3CD00D3C51A /* QPString.m in Sources */,
 				9B88CA361D7FB74F00C59D87 /* AFDownloadRequestOperation.m in Sources */,
@@ -7740,12 +7745,12 @@
 				9BF5DAF61DAEB040008C1F39 /* ZXRSSExpandedDecodedNumeric.m in Sources */,
 				9BDFD1D81F283B8800B723DC /* UIButton+UIButtonAutolayout.m in Sources */,
 				9BF5DA8B1DAEB040008C1F39 /* ZXEmailAddressResultParser.m in Sources */,
+				9B7090281D8FB7D0002E2D94 /* TZPhotoPickerController.m in Sources */,
 				9B88C71E1D7EC63900C59D87 /* EditViewCell.m in Sources */,
 				9B88C8301D7FB2BE00C59D87 /* RcmdManager.m in Sources */,
 				9BF42A3C1DF68DB100506EEC /* EaseMessageViewController.m in Sources */,
 				9B88CA131D7FB74F00C59D87 /* MJRefreshHeader.m in Sources */,
 				9BF5DA961DAEB040008C1F39 /* ZXResultParser.m in Sources */,
-				F2928D681F5EE1BB003FA590 /* TZAssetCell.m in Sources */,
 				9B88CA641D7FB74F00C59D87 /* UIImage+WebP.m in Sources */,
 				9B2B64261DAB8D840077D420 /* CYRTextView.m in Sources */,
 				9BF42A541DF68DB100506EEC /* EaseRecordView.m in Sources */,
@@ -7789,7 +7794,6 @@
 				F26F6DA51EEA513200778045 /* MineCell.m in Sources */,
 				9B4B5C581E13E13A009E69D3 /* MPLinkTextView.m in Sources */,
 				9BFC361E1D9947AD00794D4F /* UIButton+extend.m in Sources */,
-				9B0DD5151F00EFCE00251DA8 /* TopicListViewController.swift in Sources */,
 				9BC87DA41D9B5EBC003164E9 /* SearchHeaderView.m in Sources */,
 				F273A8561E8FA1DB00F5B5B2 /* SRPictureModel.m in Sources */,
 				F282E15E1E8CE95300FE5A60 /* TOCropViewController.m in Sources */,
@@ -7805,6 +7809,7 @@
 				9B88C78C1D7ECA4100C59D87 /* ShareSettingViewController.m in Sources */,
 				9B228CCA1D9D464700CDFC25 /* SuffrageSettingViewController.m in Sources */,
 				9BF5DA9F1DAEB040008C1F39 /* ZXURIResultParser.m in Sources */,
+				9B7090271D8FB7D0002E2D94 /* TZImagePickerController.m in Sources */,
 				9B35BDDE1F0F2B980030A784 /* View+MASAdditions.m in Sources */,
 				9B88CA591D7FB74F00C59D87 /* NSData+ImageContentType.m in Sources */,
 				9BF5DA791DAEB040008C1F39 /* ZXAztecBinaryShiftToken.m in Sources */,
@@ -7899,6 +7904,7 @@
 				9B88C7821D7ECA3A00C59D87 /* PrivacyViewController.m in Sources */,
 				9BF5DB261DAEB040008C1F39 /* ZXPDF417DecodedBitStreamParser.m in Sources */,
 				9B88CA631D7FB74F00C59D87 /* UIImage+MultiFormat.m in Sources */,
+				9B7090241D8FB7D0002E2D94 /* TZAssetModel.m in Sources */,
 				9B88CA391D7FB74F00C59D87 /* NJKWebViewProgressView.m in Sources */,
 				F2F1423C1E022E85003B535C /* MusicTypedef.m in Sources */,
 				9BF5375E1E0296F6005500D3 /* PushSettingViewController.m in Sources */,
@@ -7980,6 +7986,7 @@
 				9B88CA181D7FB74F00C59D87 /* MJRefreshBackNormalFooter.m in Sources */,
 				9BF429E71DF68DB100506EEC /* EMCDDeviceManagerBase.m in Sources */,
 				9B88CA371D7FB74F00C59D87 /* NCMusicEngine.m in Sources */,
+				9B70902B1D8FB7D0002E2D94 /* TZVideoPlayerController.m in Sources */,
 				F268187A1ED824BC00D0F73A /* ContainAdministrationerViewController.m in Sources */,
 				9B241CF61ED2EED4005D833D /* MJPopTool.m in Sources */,
 				9BF42A371DF68DB100506EEC /* EaseEmotionEscape.m in Sources */,
@@ -8080,7 +8087,6 @@
 				9B8DE16F1EDFFB84009B58DF /* ShareAfterView.m in Sources */,
 				9BF5DB3C1DAEB040008C1F39 /* ZXQRCodeDecoderMetaData.m in Sources */,
 				9BF42A681DF7E50E00506EEC /* SameCityWaterFlowCollectionViewCell.m in Sources */,
-				F2928D6C1F5EE1BB003FA590 /* TZImagePickerController.m in Sources */,
 				9BF5DB361DAEB040008C1F39 /* ZXPDF417Writer.m in Sources */,
 				9BF5DA7A1DAEB040008C1F39 /* ZXAztecCode.m in Sources */,
 				9BF42A301DF68DB100506EEC /* UIViewController+DismissKeyboard.m in Sources */,
@@ -8089,7 +8095,6 @@
 				9BF5DAEC1DAEB040008C1F39 /* ZXAI013x0x1xDecoder.m in Sources */,
 				9BF5DB0F1DAEB040008C1F39 /* ZXEANManufacturerOrgSupport.m in Sources */,
 				9B80EAFD1DC6E2F300BC969A /* AFURLResponseSerialization.m in Sources */,
-				F2928D701F5EE1BB003FA590 /* TZVideoPlayerController.m in Sources */,
 				9BF5DA831DAEB040008C1F39 /* ZXAbstractDoCoMoResultParser.m in Sources */,
 				9BBDA91E1DC5C00500D3C51A /* ZGWebSocket.m in Sources */,
 				9B88C9ED1D7FB74F00C59D87 /* CLImageEditor.m in Sources */,
@@ -8180,16 +8185,13 @@
 				9BF5DA851DAEB040008C1F39 /* ZXAddressBookDoCoMoResultParser.m in Sources */,
 				9B20D73C1EC99E1C00586DBE /* DissertationListViewController.m in Sources */,
 				9BBDA9071DC5C00500D3C51A /* ZGDesignerEventBindingRequestMesssage.m in Sources */,
-				F2928D6F1F5EE1BB003FA590 /* TZPhotoPreviewController.m in Sources */,
 				9BF5DB251DAEB040008C1F39 /* ZXPDF417CodewordDecoder.m in Sources */,
 				9B561DA01E3851C000DA5AE3 /* QNResumeUpload.m in Sources */,
 				9B88C8151D7FAEB800C59D87 /* SearchTableViewCell.m in Sources */,
-				9B0DD5191F0104A600251DA8 /* File.swift in Sources */,
 				9B88C8411D7FB51500C59D87 /* NSDictionary+JsonEnhance.m in Sources */,
 				9BF5DA8E1DAEB040008C1F39 /* ZXExpandedProductResultParser.m in Sources */,
 				9BF42A1C1DF68DB100506EEC /* PSTCollectionView.m in Sources */,
 				F268185D1ED6BDF400D0F73A /* HeadSegmentView.m in Sources */,
-				F2928D691F5EE1BB003FA590 /* TZAssetModel.m in Sources */,
 				9B88CA111D7FB74F00C59D87 /* MJRefreshComponent.m in Sources */,
 				9BF42A111DF68DB100506EEC /* EMSDWebImagePrefetcher.m in Sources */,
 				9BF5DAC81DAEB040008C1F39 /* ZXLuminanceSource.m in Sources */,
@@ -8494,6 +8496,7 @@
 					"$(PROJECT_DIR)/ivwen/3rd/Ping++/lib/Channels/Alipay",
 					"$(PROJECT_DIR)/ivwen/3rd/Tutu",
 					"$(PROJECT_DIR)/ivwen/3rd/HyphenateSDK",
+					"$(PROJECT_DIR)/ivwen/3rd/UMeng",
 				);
 				GCC_PRECOMPILE_PREFIX_HEADER = NO;
 				GCC_PREFIX_HEADER = "$(SRCROOT)/AppDelegate/PrefixHeader.pch";
@@ -8563,6 +8566,7 @@
 					"$(PROJECT_DIR)/ivwen/3rd/Ping++/lib/Channels/Alipay",
 					"$(PROJECT_DIR)/ivwen/3rd/Tutu",
 					"$(PROJECT_DIR)/ivwen/3rd/HyphenateSDK",
+					"$(PROJECT_DIR)/ivwen/3rd/UMeng",
 				);
 				GCC_PRECOMPILE_PREFIX_HEADER = NO;
 				GCC_PREFIX_HEADER = "$(SRCROOT)/AppDelegate/PrefixHeader.pch";
@@ -8605,7 +8609,6 @@
 		35450CB51B00FF9500879EBE /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				CODE_SIGN_IDENTITY = "iPhone Developer: 全 张 (43JWSXMT4K)";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
@@ -8631,7 +8634,6 @@
 		35450CB61B00FF9500879EBE /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				CODE_SIGN_IDENTITY = "iPhone Developer: 全 张 (43JWSXMT4K)";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
diff --git a/ivwen/ivwen.xcodeproj/project.xcworkspace/xcuserdata/lilin.xcuserdatad/UserInterfaceState.xcuserstate b/ivwen/ivwen.xcodeproj/project.xcworkspace/xcuserdata/lilin.xcuserdatad/UserInterfaceState.xcuserstate
index 6bf5e241..56ada873 100644
Binary files a/ivwen/ivwen.xcodeproj/project.xcworkspace/xcuserdata/lilin.xcuserdatad/UserInterfaceState.xcuserstate and b/ivwen/ivwen.xcodeproj/project.xcworkspace/xcuserdata/lilin.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/ivwen/ivwen.xcodeproj/project.xcworkspace/xcuserdata/wanglei.xcuserdatad/UserInterfaceState.xcuserstate b/ivwen/ivwen.xcodeproj/project.xcworkspace/xcuserdata/wanglei.xcuserdatad/UserInterfaceState.xcuserstate
index d0517228..db80dbc8 100644
Binary files a/ivwen/ivwen.xcodeproj/project.xcworkspace/xcuserdata/wanglei.xcuserdatad/UserInterfaceState.xcuserstate and b/ivwen/ivwen.xcodeproj/project.xcworkspace/xcuserdata/wanglei.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/ivwen/ivwen.xcodeproj/xcuserdata/lilin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/ivwen/ivwen.xcodeproj/xcuserdata/lilin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index 144f4902..afe2db44 100644
--- a/ivwen/ivwen.xcodeproj/xcuserdata/lilin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/ivwen/ivwen.xcodeproj/xcuserdata/lilin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -35,13 +35,29 @@
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "ivwen/controller/SNS/CommentViewController/CommentViewController.m"
-            timestampString = "526384821.283896"
+            filePath = "ivwen/3rd/CLImageEditor/ImageTools/CLImageToolBase.m"
+            timestampString = "525692793.132496"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "165"
-            endingLineNumber = "165"
-            landmarkName = "-viewDidLoad"
+            startingLineNumber = "78"
+            endingLineNumber = "78"
+            landmarkName = "-executeWithCompletionBlock:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "ivwen/3rd/CLImageEditor/ImageTools/CLClippingTool/CLClippingTool.m"
+            timestampString = "525692812.541439"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "170"
+            endingLineNumber = "170"
+            landmarkName = "-executeWithCompletionBlock:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
diff --git a/ivwen/ivwen/3rd/CLImageEditor/ImageTools/CLRotateTool/CLRotateTool.m b/ivwen/ivwen/3rd/CLImageEditor/ImageTools/CLRotateTool/CLRotateTool.m
index 86e10b5f..5bedd12c 100755
--- a/ivwen/ivwen/3rd/CLImageEditor/ImageTools/CLRotateTool/CLRotateTool.m
+++ b/ivwen/ivwen/3rd/CLImageEditor/ImageTools/CLRotateTool/CLRotateTool.m
@@ -81,25 +81,25 @@ - (void)setup
     _gridView.gridColor = [[UIColor clearColor] colorWithAlphaComponent:0];
     _gridView.clipsToBounds = NO;
     /*
-     _rotateSlider = [self sliderWithValue:0 minimumValue:-1 maximumValue:1];
-     _rotateSlider.superview.center = CGPointMake(self.editor.view.width/2, self.editor.menuView.top-30);
-     _rotateSlider.hidden = YES;
-     
-     _menuScroll = [[UIScrollView alloc] initWithFrame:self.editor.menuView.frame];
-     _menuScroll.backgroundColor = self.editor.menuView.backgroundColor;
-     _menuScroll.showsHorizontalScrollIndicator = NO;
-     [self.editor.view addSubview:_menuScroll];
-     [self setMenu];
-     
-     _menuScroll.transform = CGAffineTransformMakeTranslation(0, self.editor.view.height-_menuScroll.top);
-     [UIView animateWithDuration:kCLImageToolAnimationDuration
-     animations:^{
-     //_menuScroll.transform = CGAffineTransformIdentity;
-     }
-     completion:^(BOOL finished) {
-     
-     }];
-     */
+    _rotateSlider = [self sliderWithValue:0 minimumValue:-1 maximumValue:1];
+    _rotateSlider.superview.center = CGPointMake(self.editor.view.width/2, self.editor.menuView.top-30);
+    _rotateSlider.hidden = YES;
+    
+    _menuScroll = [[UIScrollView alloc] initWithFrame:self.editor.menuView.frame];
+    _menuScroll.backgroundColor = self.editor.menuView.backgroundColor;
+    _menuScroll.showsHorizontalScrollIndicator = NO;
+    [self.editor.view addSubview:_menuScroll];
+    [self setMenu];
+    
+    _menuScroll.transform = CGAffineTransformMakeTranslation(0, self.editor.view.height-_menuScroll.top);
+    [UIView animateWithDuration:kCLImageToolAnimationDuration
+                     animations:^{
+                         //_menuScroll.transform = CGAffineTransformIdentity;
+                     }
+                     completion:^(BOOL finished) {
+                         
+                     }];
+    */
     
     _rotateImageView = [[UIImageView alloc] initWithFrame:_initialRect];
     _rotateImageView.image = self.editor.imageView.image;
@@ -117,10 +117,10 @@ - (void)rotate
     _angle = value / 2 - 1;
     
     [UIView animateWithDuration:kCLImageToolAnimationDuration
-                     animations:^{
-                         [self rotateStateDidChange];
-                     }
-     ];
+        animations:^{
+            [self rotateStateDidChange];
+        }
+    ];
 }
 
 - (void)cleanup
@@ -155,27 +155,27 @@ - (void)cleanup
 - (void)executeWithCompletionBlock:(void(^)(UIImage *image, NSError *error, NSDictionary *userInfo))completionBlock
 {
     /*
-     dispatch_async(dispatch_get_main_queue(), ^{
-     UIActivityIndicatorView *indicator = [CLImageEditorTheme indicatorView];
-     indicator.center = CGPointMake(_gridView.width/2, _gridView.height/2);
-     [_gridView addSubview:indicator];
-     [indicator startAnimating];
-     });
+    dispatch_async(dispatch_get_main_queue(), ^{
+        UIActivityIndicatorView *indicator = [CLImageEditorTheme indicatorView];
+        indicator.center = CGPointMake(_gridView.width/2, _gridView.height/2);
+        [_gridView addSubview:indicator];
+        [indicator startAnimating];
+    });
      */
     
-    //    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
     
-    //        UIImageView *tempImageView = self.editor.imageView;
-    //
-    //        UIImage *tempImage = [tempImageView.image copy];
+//        UIImageView *tempImageView = self.editor.imageView;
+//        
+//        UIImage *tempImage = [tempImageView.image copy];
     
-    UIImage *image = [self buildImage:self.editor.imageView.image];
-    
-    dispatch_async(dispatch_get_main_queue(), ^{
-        _executed = YES;
-        completionBlock(image, nil, nil);
-    });
-    //    });
+        UIImage *image = [self buildImage:self.editor.imageView.image];
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            _executed = YES;
+            completionBlock(image, nil, nil);
+        });
+//    });
 }
 
 #pragma mark-
@@ -185,7 +185,7 @@ - (void)setMenu
     CGFloat W = 70;
     CGFloat H = _menuScroll.height;
     CGFloat x = 0;
-    
+	
     NSArray *_menu = @[
                        @{@"title":[CLImageEditorTheme localizedString:@"CLRotateTool_MenuItemRotateTitle" withDefault:@" "], @"icon":[self imageForKey:kCLRotateToolRotateIconName defaultImageName:@""]},
                        @{@"title":[CLImageEditorTheme localizedString:@"CLRotateTool_MenuItemFlipTitle1" withDefault:@" "], @"icon":[self imageForKey:kCLRotateToolFlipHorizontalIconName defaultImageName:@"btn_flip1.png"]},
@@ -240,7 +240,7 @@ - (void)tappedMenu:(UITapGestureRecognizer*)sender
                          [self rotateStateDidChange];
                      }
                      completion:^(BOOL finished) {
-                         _gridView.hidden = NO;
+                        _gridView.hidden = NO;
                      }
      ];
 }
@@ -260,8 +260,8 @@ - (UISlider*)sliderWithValue:(CGFloat)value minimumValue:(CGFloat)min maximumVal
     slider.minimumValue = min;
     slider.value = value;
     
-    //    [container addSubview:slider];
-    //    [self.editor.view addSubview:container];
+//    [container addSubview:slider];
+//    [self.editor.view addSubview:container];
     
     return slider;
 }
diff --git a/ivwen/ivwen/3rd/CLImageEditor/ViewController/_CLImageEditorViewController.m b/ivwen/ivwen/3rd/CLImageEditor/ViewController/_CLImageEditorViewController.m
index 53791774..34d18146 100755
--- a/ivwen/ivwen/3rd/CLImageEditor/ViewController/_CLImageEditorViewController.m
+++ b/ivwen/ivwen/3rd/CLImageEditor/ViewController/_CLImageEditorViewController.m
@@ -261,7 +261,7 @@ - (void)initNavigationBar
     
     UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(pushedCloseBtn:)];
     [self.navigationController setNavigationBarHidden:NO animated:YES];
-    
+
     
     if(_navigationBar==nil){
         UINavigationItem *navigationItem  = [[UINavigationItem alloc] init];
@@ -502,7 +502,7 @@ - (void)restoreImageView:(BOOL)canceled
     
     _menuView.frame = [window convertRect:_menuView.frame fromView:_menuView.superview];
     _navigationBar.frame = [window convertRect:_navigationBar.frame fromView:_navigationBar.superview];
-    
+
     [window addSubview:_menuView];
     [window addSubview:_navigationBar];
     
@@ -614,9 +614,9 @@ - (void)setMenuView
     if (0<diff && diff<2*W) {
         padding = diff/(toolCount+1);
     }
-    
+
     NSMutableArray *buttons=[[NSMutableArray  alloc]initWithCapacity:5];
-    
+
     UIBarButtonItem *cancelButton=[[UIBarButtonItem alloc] initWithTitle:@"更换" style:UIBarButtonItemStylePlain target:self action:@selector(pushedChangeBtn:)];
     [buttons addObject:cancelButton];
     
@@ -830,16 +830,16 @@ - (void)swapToolBarWithEditting:(BOOL)editting
     //[self swapNavigationBarWithEditting:editting];
     
     /*
-     if(self.currentTool){
-     UINavigationItem *item  = [[UINavigationItem alloc] initWithTitle:self.currentTool.toolInfo.title];
-     item.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[CLImageEditorTheme localizedString:@"CLImageEditor_OKBtnTitle" withDefault:@"OK"] style:UIBarButtonItemStyleDone target:self action:@selector(pushedDoneBtn:)];
-     item.leftBarButtonItem  = [[UIBarButtonItem alloc] initWithTitle:[CLImageEditorTheme localizedString:@"CLImageEditor_BackBtnTitle" withDefault:@"Back"] style:UIBarButtonItemStylePlain target:self action:@selector(pushedCancelBtn:)];
-     
-     [_navigationBar pushNavigationItem:item animated:(self.navigationController==nil)];
-     }
-     else{
-     [_navigationBar popNavigationItemAnimated:(self.navigationController==nil)];
-     }
+    if(self.currentTool){
+        UINavigationItem *item  = [[UINavigationItem alloc] initWithTitle:self.currentTool.toolInfo.title];
+        item.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[CLImageEditorTheme localizedString:@"CLImageEditor_OKBtnTitle" withDefault:@"OK"] style:UIBarButtonItemStyleDone target:self action:@selector(pushedDoneBtn:)];
+        item.leftBarButtonItem  = [[UIBarButtonItem alloc] initWithTitle:[CLImageEditorTheme localizedString:@"CLImageEditor_BackBtnTitle" withDefault:@"Back"] style:UIBarButtonItemStylePlain target:self action:@selector(pushedCancelBtn:)];
+        
+        [_navigationBar pushNavigationItem:item animated:(self.navigationController==nil)];
+    }
+    else{
+        [_navigationBar popNavigationItemAnimated:(self.navigationController==nil)];
+    }
      */
 }
 
@@ -892,25 +892,25 @@ - (void)tappedMenuView:(UITapGestureRecognizer*)sender
             self.view.userInteractionEnabled = NO;
             
             [self.currentTool executeWithCompletionBlock:^(UIImage *image, NSError *error, NSDictionary *userInfo)
-             {
-                 if(error)
-                 {
-                     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
-                     [alert show];
-                 }
-                 else if(image)
-                 {
-                     _originalImage = image;
-                     _imageView.image = image;
-                     
-                     [self resetImageViewFrame];
-                     self.currentTool = nil;
-                     //保存完成后加载新工具(只能在Block内部做)
-                     [self setupToolWithToolInfo:view.toolInfo];
-                     self.doneButton.enabled = YES;
-                 }
-                 self.view.userInteractionEnabled = YES;
-             }];
+            {
+                if(error)
+                {
+                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
+                    [alert show];
+                }
+                else if(image)
+                {
+                    _originalImage = image;
+                    _imageView.image = image;
+                    
+                    [self resetImageViewFrame];
+                    self.currentTool = nil;
+                    //保存完成后加载新工具(只能在Block内部做)
+                    [self setupToolWithToolInfo:view.toolInfo];
+                    self.doneButton.enabled = YES;
+                }
+                self.view.userInteractionEnabled = YES;
+            }];
             
             [self adjustToolButtonStat:view];
         }
@@ -1174,7 +1174,7 @@ - (void)pushedChangeBtn:(id)sender
                 _gifImageData = data;
                 
                 _originalImage = [UIImage sd_animatedGIFWithData:data];
-                
+                    
                 self.filterView.userInteractionEnabled = NO;
                 
                 self.cropView.userInteractionEnabled = NO;
@@ -1207,13 +1207,13 @@ - (void)pushedChangeBtn:(id)sender
             [self resetToolButtonStat];
             
             self.doneButton.enabled = YES;
-            
+
         }
-        
+
     };
     
     [self presentViewController:picker animated:YES completion:nil];
-    
+
     
     [self.currentTool executeWithCompletionBlock:^(UIImage *image, NSError *error, NSDictionary *userInfo) {
         if(error){
@@ -1229,7 +1229,7 @@ - (void)pushedChangeBtn:(id)sender
         }
         self.view.userInteractionEnabled = YES;
     }];
-    
+
 }
 
 #pragma mark- ScrollView delegate
diff --git a/ivwen/ivwen/3rd/Cut/QPCutViewController.m b/ivwen/ivwen/3rd/Cut/QPCutViewController.m
index cae430de..8c8c9ef3 100755
--- a/ivwen/ivwen/3rd/Cut/QPCutViewController.m
+++ b/ivwen/ivwen/3rd/Cut/QPCutViewController.m
@@ -410,11 +410,11 @@ -(void)generateImageByAVAsset:(AVAsset *)asset isMaxiMumSize:(BOOL)isMaxiMumSize
     
     if ([array count] == 0) {
         
-        //        CGFloat d = _cutInfo.cutMaxDuration / 10.0;
-        //
-        //        addTime = CMTimeMakeWithSeconds(d, 1000);
-        //
-        //        [array addObject:[NSValue valueWithCMTime:CMTimeAdd(kCMTimeZero, addTime)]];
+//        CGFloat d = _cutInfo.cutMaxDuration / 10.0;
+//        
+//        addTime = CMTimeMakeWithSeconds(d, 1000);
+//        
+//        [array addObject:[NSValue valueWithCMTime:CMTimeAdd(kCMTimeZero, addTime)]];
         
         dispatch_async(dispatch_get_main_queue(), ^{
             
@@ -836,10 +836,10 @@ - (void)finishCutVideo:(videoConpressDoneBlock)block
                 [Utils showToast:@"导出失败!"];
                 
             }
-            
+
         }];
         
-    }];
+           }];
     //        _cutVideo.delegate = self;
     //
     //        [_cutVideo cutVideoAndCompressAVAsset:_cutInfo.asset range:range offset:[self offsetVideo] waterMark:[QupaiSDK shared].watermarkImage size:[self sizeVideo] bitrate:400000 presetName:AVAssetExportPresetHighestQuality toURL:toURL];
@@ -956,43 +956,43 @@ - (CGRect)videoFitRectByAVAsset:(AVAsset *)asset {
     return CGRectMake(offsetX, offsetY, destWidth, destHeight);
     
     // old
-    //        float sw = assetTrackVideo.naturalSize.width, sh = assetTrackVideo.naturalSize.height;
-    //        float dw = 240, dh = 240, ox = 0, oy = 0, rotate = 0,fw = 0, fh = 0;
-    //
-    //        float rw = dw / sw;
-    //        float rh = dh / sh;
-    //        if (rw > rh) {
-    //            rh = dh / sw;
-    //        }else{
-    //            rw = dw / sh;
-    //        }
-    //        fw = sw * rw;
-    //        fh = sh * rh;
-    //        ox = (fw - dw) * 0.5;
-    //        oy = (fh - dh) * 0.5;
-    //        CGAffineTransform trackTrans = assetTrackVideo.preferredTransform;
-    //        if (trackTrans.b == 1 && trackTrans.c == -1) {//90 ang
-    //            rotate = M_PI_2;
-    //            CGFloat t = ox;
-    //            ox = oy;
-    //            oy = t;
-    //
-    //            t = fw;
-    //            fw = fh;
-    //            fh = t;
-    //            _videoSize = CGSizeMake(_videoSize.height, _videoSize.width);
-    //        }else if (trackTrans.b == -1 && trackTrans.c == 1) {//270 ang
-    //            rotate = M_PI_2 * 3;
-    //            CGFloat t = ox;
-    //            ox = oy;
-    //            oy = t;
-    //
-    //            t = fw;
-    //            fw = fh;
-    //            fh = t;
-    //            _videoSize = CGSizeMake(_videoSize.height, _videoSize.width);
-    //        }
-    //        return CGRectMake(ox, oy, fw, fh);
+//        float sw = assetTrackVideo.naturalSize.width, sh = assetTrackVideo.naturalSize.height;
+//        float dw = 240, dh = 240, ox = 0, oy = 0, rotate = 0,fw = 0, fh = 0;
+//    
+//        float rw = dw / sw;
+//        float rh = dh / sh;
+//        if (rw > rh) {
+//            rh = dh / sw;
+//        }else{
+//            rw = dw / sh;
+//        }
+//        fw = sw * rw;
+//        fh = sh * rh;
+//        ox = (fw - dw) * 0.5;
+//        oy = (fh - dh) * 0.5;
+//        CGAffineTransform trackTrans = assetTrackVideo.preferredTransform;
+//        if (trackTrans.b == 1 && trackTrans.c == -1) {//90 ang
+//            rotate = M_PI_2;
+//            CGFloat t = ox;
+//            ox = oy;
+//            oy = t;
+//    
+//            t = fw;
+//            fw = fh;
+//            fh = t;
+//            _videoSize = CGSizeMake(_videoSize.height, _videoSize.width);
+//        }else if (trackTrans.b == -1 && trackTrans.c == 1) {//270 ang
+//            rotate = M_PI_2 * 3;
+//            CGFloat t = ox;
+//            ox = oy;
+//            oy = t;
+//    
+//            t = fw;
+//            fw = fh;
+//            fh = t;
+//            _videoSize = CGSizeMake(_videoSize.height, _videoSize.width);
+//        }
+//        return CGRectMake(ox, oy, fw, fh);
 }
 
 - (CGRect)cropViewFitRect {
@@ -1051,7 +1051,7 @@ - (CGSize)sizeVideo {
             return CGSizeMake(720, 1280);
         }
         else if (trackTrans.a == -1 && trackTrans.d == -1) {//180 ang
-            
+         
             return CGSizeMake(1280, 720);
         }
         else if (trackTrans.b == -1 && trackTrans.c == 1) {//270 ang
@@ -1083,7 +1083,7 @@ - (CGSize)sizeVideo {
         }
         
         return CGSizeMake(720, 3 * 720 / 4);
-        
+
     }
     else if ([self getVideoAspectRatio:_cutInfo.asset] == ratio2 || [self getVideoAspectRatio:_cutInfo.asset] == ratio4)
     {
@@ -1117,7 +1117,7 @@ - (CGSize)sizeVideo {
             
             return CGSizeMake(1280, 720);
         }
-        
+
         return CGSizeMake(720, 1280);
     }
     
diff --git a/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseConversationListViewController.h b/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseConversationListViewController.h
index 7110de80..0959ab14 100644
--- a/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseConversationListViewController.h
+++ b/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseConversationListViewController.h
@@ -80,6 +80,8 @@ typedef NS_ENUM(int, DXDeleteConvesationType) {
 
 @property (strong, nonatomic) NSMutableArray * noticeArray;
 
+@property (strong, nonatomic) NSArray * detailArray;
+
 @property (assign, nonatomic) BOOL      isFromMsgCenter;
 
 
diff --git a/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseConversationListViewController.m b/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseConversationListViewController.m
index 0e65780f..c315389c 100644
--- a/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseConversationListViewController.m
+++ b/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseConversationListViewController.m
@@ -46,24 +46,15 @@ -(void)viewWillAppear:(BOOL)animated
     
     [super viewWillAppear:animated];
     
-//    [self.navigationController.navigationBar setBackgroundColor:[UIColor whiteColor]];
-    
     [self registerNotifications];
     
     if (self.isFromMsgCenter) {
         
         if ([EMClient sharedClient].isLoggedIn) {
+            
             [self tableViewDidTriggerHeaderRefresh];
             
             [self.tableView reloadData];
-            
-//            if ([self.dataArray count] > 0) {
-//                
-//                EaseConversationCell * cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
-//                
-//                [cell hiddenAllSideslip];
-//                
-//            }
         }
     }
     else
@@ -191,8 +182,8 @@ - (void)viewDidLoad {
                 
                 [self.noticeArray insertObject:rewardDic atIndex:self.noticeArray.count - 2];
             }
+
         }
-        
         //定时刷新消息通知
         _timer = [[NSTimer alloc] initWithFireDate:[NSDate distantPast]
                                           interval:1
@@ -294,7 +285,7 @@ - (void)refreshNotice
                              [self.noticeArray insertObject:rewardDic atIndex:self.noticeArray.count - 2];
                          }
                      }
-
+                     
                      [self.tableView reloadData];
                    
                  }
diff --git a/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseMessageViewController.m b/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseMessageViewController.m
index cec7d1d4..249c8b81 100644
--- a/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseMessageViewController.m
+++ b/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseMessageViewController.m
@@ -530,7 +530,7 @@ - (void)setChatToolbar:(EaseChatToolbar *)chatToolbar
         [self.view addSubview:_chatToolbar];
         
         CGRect tableFrame = self.tableView.frame;
-        tableFrame.size.height = self.view.frame.size.height - _chatToolbar.frame.size.height;
+        tableFrame.size.height = self.view.frame.size.height - _chatToolbar.frame.size.height - 65;
         self.tableView.frame = tableFrame;
         if ([chatToolbar isKindOfClass:[EaseChatToolbar class]]) {
             [(EaseChatToolbar *)self.chatToolbar setDelegate:self];
@@ -541,7 +541,7 @@ - (void)setChatToolbar:(EaseChatToolbar *)chatToolbar
     }
     else
     {
-        [self.tableView setHeight:K_SCREEN_HEIGHT - 64];
+        [self.tableView setHeight:K_SCREEN_HEIGHT - 64 - 45];
     }
     
 }
@@ -829,6 +829,8 @@ - (void)_locationMessageCellSelected:(id<IMessageModel>)model
 #pragma mark  文章点击cell
 - (void)_articleMessageCellSelected:(id<IMessageModel>)model
 {
+    [AppManager sharedManager].shareFrom = @"message";
+
     BrowseSelfViewController* browseVC = [[BrowseSelfViewController alloc]initWithNibName:NSStringFromClass([BrowseSelfViewController class]) bundle:nil];
     [browseVC setValue:[NSNumber numberWithBool:YES] forKey:@"isBrowseOtherView"];
     [browseVC setValue:model.articleID forKey:@"articleID"];
@@ -1946,7 +1948,7 @@ - (void)proximitySensorChanged:(BOOL)isCloseToUser
 - (void)copyMenuAction:(id)sender
 {
     UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
-    if (self.menuIndexPath && self.menuIndexPath.row > 0) {
+    if (self.menuIndexPath && self.menuIndexPath.row >= 0) {
         id<IMessageModel> model = [self.dataArray objectAtIndex:self.menuIndexPath.row];
         pasteboard.string = model.text;
     }
@@ -1956,7 +1958,7 @@ - (void)copyMenuAction:(id)sender
 
 - (void)deleteMenuAction:(id)sender
 {
-    if (self.menuIndexPath && self.menuIndexPath.row > 0) {
+    if (self.menuIndexPath && self.menuIndexPath.row >= 0) {
         id<IMessageModel> model = [self.dataArray objectAtIndex:self.menuIndexPath.row];
         NSMutableIndexSet *indexs = [NSMutableIndexSet indexSetWithIndex:self.menuIndexPath.row];
         NSMutableArray *indexPaths = [NSMutableArray arrayWithObjects:self.menuIndexPath, nil];
@@ -2121,8 +2123,12 @@ - (void)_sendMessage:(EMMessage *)message
         if (!aError) {
             [weakself _refreshAfterSentMessage:aMessage];
             
-            [[NetManager sharedManager] video_play:@"user_message" content:@{@"user_id":[UserManager sharedManager].userID,
-                                                                             @"to_user_id":self.conversation.conversationId}];
+            //上报:私信发送
+            [[NetManager sharedManager] clientReport:@"user_message" params:nil content:@{@"user_id":[UserManager sharedManager].userID,@"to_user_id":self.conversation.conversationId} block:^(SimpleResp *resp) {
+               
+                
+                
+            }];
         }
         else if (aError.code == EMErrorUserNotLogin)
         {
@@ -2152,6 +2158,11 @@ - (void)_sendMessage:(EMMessage *)message
             
             [Utils showToast:@"已被对方加入黑名单"];
         }
+        // 私信过滤,检测不合法信息,去掉感叹号,假装发送成功
+        else if (aError.code == EMErrorMessageIncludeIllegalContent)
+        {
+            
+        }
 
     }];
 }
diff --git a/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseRefreshTableViewController.m b/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseRefreshTableViewController.m
index a253717d..82c9b13c 100644
--- a/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseRefreshTableViewController.m
+++ b/ivwen/ivwen/3rd/EaseUI/EMUIKit/ViewController/EaseRefreshTableViewController.m
@@ -45,7 +45,6 @@ - (void)viewDidLoad {
 //    }
     
     _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:self.style];
-//    _tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
     _tableView.delegate = self;
     _tableView.dataSource = self;
     _tableView.tableFooterView = self.defaultFooterView;
diff --git a/ivwen/ivwen/3rd/GTMBase64/GTMBase64.h b/ivwen/ivwen/3rd/GTMBase64/GTMBase64.h
new file mode 100755
index 00000000..87a95a32
--- /dev/null
+++ b/ivwen/ivwen/3rd/GTMBase64/GTMBase64.h
@@ -0,0 +1,189 @@
+//
+//  GTMBase64.h
+//
+//  Copyright 2006-2008 Google Inc.
+//
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License.  You may obtain a copy
+//  of the License at
+// 
+//  http://www.apache.org/licenses/LICENSE-2.0
+// 
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+//
+
+
+// WARNING: This class provides a subset of the functionality available in
+// GTMStringEncoding and may go away in the future.
+// Please consider using GTMStringEncoding instead.
+
+
+#import <Foundation/Foundation.h>
+#import "GTMDefines.h"
+
+// GTMBase64
+//
+/// Helper for handling Base64 and WebSafeBase64 encodings
+//
+/// The webSafe methods use different character set and also the results aren't
+/// always padded to a multiple of 4 characters.  This is done so the resulting
+/// data can be used in urls and url query arguments without needing any
+/// encoding.  You must use the webSafe* methods together, the data does not
+/// interop with the RFC methods.
+//
+@interface GTMBase64 : NSObject
+
+//
+// Standard Base64 (RFC) handling
+//
+
+// encodeData:
+//
+/// Base64 encodes contents of the NSData object.
+//
+/// Returns:
+///   A new autoreleased NSData with the encoded payload.  nil for any error.
+//
++(NSData *)encodeData:(NSData *)data;
+
+// decodeData:
+//
+/// Base64 decodes contents of the NSData object.
+//
+/// Returns:
+///   A new autoreleased NSData with the decoded payload.  nil for any error.
+//
++(NSData *)decodeData:(NSData *)data;
+
+// encodeBytes:length:
+//
+/// Base64 encodes the data pointed at by |bytes|.
+//
+/// Returns:
+///   A new autoreleased NSData with the encoded payload.  nil for any error.
+//
++(NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length;
+
+// decodeBytes:length:
+//
+/// Base64 decodes the data pointed at by |bytes|.
+//
+/// Returns:
+///   A new autoreleased NSData with the encoded payload.  nil for any error.
+//
++(NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length;
+
+// stringByEncodingData:
+//
+/// Base64 encodes contents of the NSData object.
+//
+/// Returns:
+///   A new autoreleased NSString with the encoded payload.  nil for any error.
+//
++(NSString *)stringByEncodingData:(NSData *)data;
+
+// stringByEncodingBytes:length:
+//
+/// Base64 encodes the data pointed at by |bytes|.
+//
+/// Returns:
+///   A new autoreleased NSString with the encoded payload.  nil for any error.
+//
++(NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length;
+
+// decodeString:
+//
+/// Base64 decodes contents of the NSString.
+//
+/// Returns:
+///   A new autoreleased NSData with the decoded payload.  nil for any error.
+//
++(NSData *)decodeString:(NSString *)string;
+
+//
+// Modified Base64 encoding so the results can go onto urls.
+//
+// The changes are in the characters generated and also allows the result to
+// not be padded to a multiple of 4.
+// Must use the matching call to encode/decode, won't interop with the
+// RFC versions.
+//
+
+// webSafeEncodeData:padded:
+//
+/// WebSafe Base64 encodes contents of the NSData object.  If |padded| is YES
+/// then padding characters are added so the result length is a multiple of 4.
+//
+/// Returns:
+///   A new autoreleased NSData with the encoded payload.  nil for any error.
+//
++(NSData *)webSafeEncodeData:(NSData *)data
+                      padded:(BOOL)padded;
+
+// webSafeDecodeData:
+//
+/// WebSafe Base64 decodes contents of the NSData object.
+//
+/// Returns:
+///   A new autoreleased NSData with the decoded payload.  nil for any error.
+//
++(NSData *)webSafeDecodeData:(NSData *)data;
+
+// webSafeEncodeBytes:length:padded:
+//
+/// WebSafe Base64 encodes the data pointed at by |bytes|.  If |padded| is YES
+/// then padding characters are added so the result length is a multiple of 4.
+//
+/// Returns:
+///   A new autoreleased NSData with the encoded payload.  nil for any error.
+//
++(NSData *)webSafeEncodeBytes:(const void *)bytes
+                       length:(NSUInteger)length
+                       padded:(BOOL)padded;
+
+// webSafeDecodeBytes:length:
+//
+/// WebSafe Base64 decodes the data pointed at by |bytes|.
+//
+/// Returns:
+///   A new autoreleased NSData with the encoded payload.  nil for any error.
+//
++(NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length;
+
+// stringByWebSafeEncodingData:padded:
+//
+/// WebSafe Base64 encodes contents of the NSData object.  If |padded| is YES
+/// then padding characters are added so the result length is a multiple of 4.
+//
+/// Returns:
+///   A new autoreleased NSString with the encoded payload.  nil for any error.
+//
++(NSString *)stringByWebSafeEncodingData:(NSData *)data
+                                  padded:(BOOL)padded;
+
+// stringByWebSafeEncodingBytes:length:padded:
+//
+/// WebSafe Base64 encodes the data pointed at by |bytes|.  If |padded| is YES
+/// then padding characters are added so the result length is a multiple of 4.
+//
+/// Returns:
+///   A new autoreleased NSString with the encoded payload.  nil for any error.
+//
++(NSString *)stringByWebSafeEncodingBytes:(const void *)bytes
+                                   length:(NSUInteger)length
+                                   padded:(BOOL)padded;
+
+// webSafeDecodeString:
+//
+/// WebSafe Base64 decodes contents of the NSString.
+//
+/// Returns:
+///   A new autoreleased NSData with the decoded payload.  nil for any error.
+//
++(NSData *)webSafeDecodeString:(NSString *)string;
+
+@end
\ No newline at end of file
diff --git a/ivwen/ivwen/3rd/GTMBase64/GTMBase64.m b/ivwen/ivwen/3rd/GTMBase64/GTMBase64.m
new file mode 100755
index 00000000..3ffc244b
--- /dev/null
+++ b/ivwen/ivwen/3rd/GTMBase64/GTMBase64.m
@@ -0,0 +1,692 @@
+//
+//  GTMBase64.m
+//
+//  Copyright 2006-2008 Google Inc.
+//
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License.  You may obtain a copy
+//  of the License at
+// 
+//  http://www.apache.org/licenses/LICENSE-2.0
+// 
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+//
+
+#import "GTMBase64.h"
+#import "GTMDefines.h"
+
+static const char *kBase64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+static const char *kWebSafeBase64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
+static const char kBase64PaddingChar = '=';
+static const char kBase64InvalidChar = 99;
+
+static const char kBase64DecodeChars[] = {
+    // This array was generated by the following code:
+    // #include <sys/time.h>
+    // #include <stdlib.h>
+    // #include <string.h>
+    // main()
+    // {
+    //   static const char Base64[] =
+    //     "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+    //   char *pos;
+    //   int idx, i, j;
+    //   printf("    ");
+    //   for (i = 0; i < 255; i += 8) {
+    //     for (j = i; j < i + 8; j++) {
+    //       pos = strchr(Base64, j);
+    //       if ((pos == NULL) || (j == 0))
+    //         idx = 99;
+    //       else
+    //         idx = pos - Base64;
+    //       if (idx == 99)
+    //         printf(" %2d,     ", idx);
+    //       else
+    //         printf(" %2d/*%c*/,", idx, j);
+    //     }
+    //     printf("\n    ");
+    //   }
+    // }
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      62/*+*/, 99,      99,      99,      63/*/ */,
+    52/*0*/, 53/*1*/, 54/*2*/, 55/*3*/, 56/*4*/, 57/*5*/, 58/*6*/, 59/*7*/,
+    60/*8*/, 61/*9*/, 99,      99,      99,      99,      99,      99,
+    99,       0/*A*/,  1/*B*/,  2/*C*/,  3/*D*/,  4/*E*/,  5/*F*/,  6/*G*/,
+    7/*H*/,  8/*I*/,  9/*J*/, 10/*K*/, 11/*L*/, 12/*M*/, 13/*N*/, 14/*O*/,
+    15/*P*/, 16/*Q*/, 17/*R*/, 18/*S*/, 19/*T*/, 20/*U*/, 21/*V*/, 22/*W*/,
+    23/*X*/, 24/*Y*/, 25/*Z*/, 99,      99,      99,      99,      99,
+    99,      26/*a*/, 27/*b*/, 28/*c*/, 29/*d*/, 30/*e*/, 31/*f*/, 32/*g*/,
+    33/*h*/, 34/*i*/, 35/*j*/, 36/*k*/, 37/*l*/, 38/*m*/, 39/*n*/, 40/*o*/,
+    41/*p*/, 42/*q*/, 43/*r*/, 44/*s*/, 45/*t*/, 46/*u*/, 47/*v*/, 48/*w*/,
+    49/*x*/, 50/*y*/, 51/*z*/, 99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99
+};
+
+static const char kWebSafeBase64DecodeChars[] = {
+    // This array was generated by the following code:
+    // #include <sys/time.h>
+    // #include <stdlib.h>
+    // #include <string.h>
+    // main()
+    // {
+    //   static const char Base64[] =
+    //     "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
+    //   char *pos;
+    //   int idx, i, j;
+    //   printf("    ");
+    //   for (i = 0; i < 255; i += 8) {
+    //     for (j = i; j < i + 8; j++) {
+    //       pos = strchr(Base64, j);
+    //       if ((pos == NULL) || (j == 0))
+    //         idx = 99;
+    //       else
+    //         idx = pos - Base64;
+    //       if (idx == 99)
+    //         printf(" %2d,     ", idx);
+    //       else
+    //         printf(" %2d/*%c*/,", idx, j);
+    //     }
+    //     printf("\n    ");
+    //   }
+    // }
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      62/*-*/, 99,      99,
+    52/*0*/, 53/*1*/, 54/*2*/, 55/*3*/, 56/*4*/, 57/*5*/, 58/*6*/, 59/*7*/,
+    60/*8*/, 61/*9*/, 99,      99,      99,      99,      99,      99,
+    99,       0/*A*/,  1/*B*/,  2/*C*/,  3/*D*/,  4/*E*/,  5/*F*/,  6/*G*/,
+    7/*H*/,  8/*I*/,  9/*J*/, 10/*K*/, 11/*L*/, 12/*M*/, 13/*N*/, 14/*O*/,
+    15/*P*/, 16/*Q*/, 17/*R*/, 18/*S*/, 19/*T*/, 20/*U*/, 21/*V*/, 22/*W*/,
+    23/*X*/, 24/*Y*/, 25/*Z*/, 99,      99,      99,      99,      63/*_*/,
+    99,      26/*a*/, 27/*b*/, 28/*c*/, 29/*d*/, 30/*e*/, 31/*f*/, 32/*g*/,
+    33/*h*/, 34/*i*/, 35/*j*/, 36/*k*/, 37/*l*/, 38/*m*/, 39/*n*/, 40/*o*/,
+    41/*p*/, 42/*q*/, 43/*r*/, 44/*s*/, 45/*t*/, 46/*u*/, 47/*v*/, 48/*w*/,
+    49/*x*/, 50/*y*/, 51/*z*/, 99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99,
+    99,      99,      99,      99,      99,      99,      99,      99
+};
+
+
+// Tests a character to see if it's a whitespace character.
+//
+// Returns:
+//   YES if the character is a whitespace character.
+//   NO if the character is not a whitespace character.
+//
+GTM_INLINE BOOL IsSpace(unsigned char c) {
+    // we use our own mapping here because we don't want anything w/ locale
+    // support.
+    static BOOL kSpaces[256] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 1,  // 0-9
+        1, 1, 1, 1, 0, 0, 0, 0, 0, 0,  // 10-19
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 20-29
+        0, 0, 1, 0, 0, 0, 0, 0, 0, 0,  // 30-39
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 40-49
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 50-59
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 60-69
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 70-79
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 80-89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 90-99
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 100-109
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 110-119
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 120-129
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 130-139
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 140-149
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 150-159
+        1, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 160-169
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 170-179
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 180-189
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 190-199
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 200-209
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 210-219
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 220-229
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 230-239
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 240-249
+        0, 0, 0, 0, 0, 1,              // 250-255
+    };
+    return kSpaces[c];
+}
+
+// Calculate how long the data will be once it's base64 encoded.
+//
+// Returns:
+//   The guessed encoded length for a source length
+//
+GTM_INLINE NSUInteger CalcEncodedLength(NSUInteger srcLen, BOOL padded) {
+    NSUInteger intermediate_result = 8 * srcLen + 5;
+    NSUInteger len = intermediate_result / 6;
+    if (padded) {
+        len = ((len + 3) / 4) * 4;
+    }
+    return len;
+}
+
+// Tries to calculate how long the data will be once it's base64 decoded.
+// Unlike the above, this is always an upperbound, since the source data
+// could have spaces and might end with the padding characters on them.
+//
+// Returns:
+//   The guessed decoded length for a source length
+//
+GTM_INLINE NSUInteger GuessDecodedLength(NSUInteger srcLen) {
+    return (srcLen + 3) / 4 * 3;
+}
+
+
+@interface GTMBase64 (PrivateMethods)
+
++(NSData *)baseEncode:(const void *)bytes
+               length:(NSUInteger)length
+              charset:(const char *)charset
+               padded:(BOOL)padded;
+
++(NSData *)baseDecode:(const void *)bytes
+               length:(NSUInteger)length
+              charset:(const char*)charset
+       requirePadding:(BOOL)requirePadding;
+
++(NSUInteger)baseEncode:(const char *)srcBytes
+                 srcLen:(NSUInteger)srcLen
+              destBytes:(char *)destBytes
+                destLen:(NSUInteger)destLen
+                charset:(const char *)charset
+                 padded:(BOOL)padded;
+
++(NSUInteger)baseDecode:(const char *)srcBytes
+                 srcLen:(NSUInteger)srcLen
+              destBytes:(char *)destBytes
+                destLen:(NSUInteger)destLen
+                charset:(const char *)charset
+         requirePadding:(BOOL)requirePadding;
+
+@end
+
+
+@implementation GTMBase64
+
+//
+// Standard Base64 (RFC) handling
+//
+
++(NSData *)encodeData:(NSData *)data {
+    return [self baseEncode:[data bytes]
+                     length:[data length]
+                    charset:kBase64EncodeChars
+                     padded:YES];
+}
+
++(NSData *)decodeData:(NSData *)data {
+    return [self baseDecode:[data bytes]
+                     length:[data length]
+                    charset:kBase64DecodeChars
+             requirePadding:YES];
+}
+
++(NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length {
+    return [self baseEncode:bytes
+                     length:length
+                    charset:kBase64EncodeChars
+                     padded:YES];
+}
+
++(NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length {
+    return [self baseDecode:bytes
+                     length:length
+                    charset:kBase64DecodeChars
+             requirePadding:YES];
+}
+
++(NSString *)stringByEncodingData:(NSData *)data {
+    NSString *result = nil;
+    NSData *converted = [self baseEncode:[data bytes]
+                                  length:[data length]
+                                 charset:kBase64EncodeChars
+                                  padded:YES];
+    if (converted) {
+        result = [[NSString alloc] initWithData:converted
+                                        encoding:NSASCIIStringEncoding];
+    }
+    return result;
+}
+
++(NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length {
+    NSString *result = nil;
+    NSData *converted = [self baseEncode:bytes
+                                  length:length
+                                 charset:kBase64EncodeChars
+                                  padded:YES];
+    if (converted) {
+        result = [[NSString alloc] initWithData:converted
+                                        encoding:NSASCIIStringEncoding];
+    }
+    return result;
+}
+
++(NSData *)decodeString:(NSString *)string {
+    NSData *result = nil;
+    NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];
+    if (data) {
+        result = [self baseDecode:[data bytes]
+                           length:[data length]
+                          charset:kBase64DecodeChars
+                   requirePadding:YES];
+    }
+    return result;
+}
+
+//
+// Modified Base64 encoding so the results can go onto urls.
+//
+// The changes are in the characters generated and also the result isn't
+// padded to a multiple of 4.
+// Must use the matching call to encode/decode, won't interop with the
+// RFC versions.
+//
+
++(NSData *)webSafeEncodeData:(NSData *)data
+                      padded:(BOOL)padded {
+    return [self baseEncode:[data bytes]
+                     length:[data length]
+                    charset:kWebSafeBase64EncodeChars
+                     padded:padded];
+}
+
++(NSData *)webSafeDecodeData:(NSData *)data {
+    return [self baseDecode:[data bytes]
+                     length:[data length]
+                    charset:kWebSafeBase64DecodeChars
+             requirePadding:NO];
+}
+
++(NSData *)webSafeEncodeBytes:(const void *)bytes
+                       length:(NSUInteger)length
+                       padded:(BOOL)padded {
+    return [self baseEncode:bytes
+                     length:length
+                    charset:kWebSafeBase64EncodeChars
+                     padded:padded];
+}
+
++(NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length {
+    return [self baseDecode:bytes
+                     length:length
+                    charset:kWebSafeBase64DecodeChars
+             requirePadding:NO];
+}
+
++(NSString *)stringByWebSafeEncodingData:(NSData *)data
+                                  padded:(BOOL)padded {
+    NSString *result = nil;
+    NSData *converted = [self baseEncode:[data bytes]
+                                  length:[data length]
+                                 charset:kWebSafeBase64EncodeChars
+                                  padded:padded];
+    if (converted) {
+        result = [[NSString alloc] initWithData:converted
+                                        encoding:NSASCIIStringEncoding];
+    }
+    return result;
+}
+
++(NSString *)stringByWebSafeEncodingBytes:(const void *)bytes
+                                   length:(NSUInteger)length
+                                   padded:(BOOL)padded {
+    NSString *result = nil;
+    NSData *converted = [self baseEncode:bytes
+                                  length:length
+                                 charset:kWebSafeBase64EncodeChars
+                                  padded:padded];
+    if (converted) {
+        result = [[NSString alloc] initWithData:converted
+                                        encoding:NSASCIIStringEncoding];
+    }
+    return result;
+}
+
++(NSData *)webSafeDecodeString:(NSString *)string {
+    NSData *result = nil;
+    NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];
+    if (data) {
+        result = [self baseDecode:[data bytes]
+                           length:[data length]
+                          charset:kWebSafeBase64DecodeChars
+                   requirePadding:NO];
+    }
+    return result;
+}
+
+@end
+
+@implementation GTMBase64 (PrivateMethods)
+
+//
+// baseEncode:length:charset:padded:
+//
+// Does the common lifting of creating the dest NSData.  it creates & sizes the
+// data for the results.  |charset| is the characters to use for the encoding
+// of the data.  |padding| controls if the encoded data should be padded to a
+// multiple of 4.
+//
+// Returns:
+//   an autorelease NSData with the encoded data, nil if any error.
+//
++(NSData *)baseEncode:(const void *)bytes
+               length:(NSUInteger)length
+              charset:(const char *)charset
+               padded:(BOOL)padded {
+    // how big could it be?
+    NSUInteger maxLength = CalcEncodedLength(length, padded);
+    // make space
+    NSMutableData *result = [NSMutableData data];
+    [result setLength:maxLength];
+    // do it
+    NSUInteger finalLength = [self baseEncode:bytes
+                                       srcLen:length
+                                    destBytes:[result mutableBytes]
+                                      destLen:[result length]
+                                      charset:charset
+                                       padded:padded];
+    if (finalLength) {
+        _GTMDevAssert(finalLength == maxLength, @"how did we calc the length wrong?");
+    } else {
+        // shouldn't happen, this means we ran out of space
+        result = nil;
+    }
+    return result;
+}
+
+//
+// baseDecode:length:charset:requirePadding:
+//
+// Does the common lifting of creating the dest NSData.  it creates & sizes the
+// data for the results.  |charset| is the characters to use for the decoding
+// of the data.
+//
+// Returns:
+//   an autorelease NSData with the decoded data, nil if any error.
+//
+//
++(NSData *)baseDecode:(const void *)bytes
+               length:(NSUInteger)length
+              charset:(const char *)charset
+       requirePadding:(BOOL)requirePadding {
+    // could try to calculate what it will end up as
+    NSUInteger maxLength = GuessDecodedLength(length);
+    // make space
+    NSMutableData *result = [NSMutableData data];
+    [result setLength:maxLength];
+    // do it
+    NSUInteger finalLength = [self baseDecode:bytes
+                                       srcLen:length
+                                    destBytes:[result mutableBytes]
+                                      destLen:[result length]
+                                      charset:charset
+                               requirePadding:requirePadding];
+    if (finalLength) {
+        if (finalLength != maxLength) {
+            // resize down to how big it was
+            [result setLength:finalLength];
+        }
+    } else {
+        // either an error in the args, or we ran out of space
+        result = nil;
+    }
+    return result;
+}
+
+//
+// baseEncode:srcLen:destBytes:destLen:charset:padded:
+//
+// Encodes the buffer into the larger.  returns the length of the encoded
+// data, or zero for an error.
+// |charset| is the characters to use for the encoding
+// |padded| tells if the result should be padded to a multiple of 4.
+//
+// Returns:
+//   the length of the encoded data.  zero if any error.
+//
++(NSUInteger)baseEncode:(const char *)srcBytes
+                 srcLen:(NSUInteger)srcLen
+              destBytes:(char *)destBytes
+                destLen:(NSUInteger)destLen
+                charset:(const char *)charset
+                 padded:(BOOL)padded {
+    if (!srcLen || !destLen || !srcBytes || !destBytes) {
+        return 0;
+    }
+    
+    char *curDest = destBytes;
+    const unsigned char *curSrc = (const unsigned char *)(srcBytes);
+    
+    // Three bytes of data encodes to four characters of cyphertext.
+    // So we can pump through three-byte chunks atomically.
+    while (srcLen > 2) {
+        // space?
+        _GTMDevAssert(destLen >= 4, @"our calc for encoded length was wrong");
+        curDest[0] = charset[curSrc[0] >> 2];
+        curDest[1] = charset[((curSrc[0] & 0x03) << 4) + (curSrc[1] >> 4)];
+        curDest[2] = charset[((curSrc[1] & 0x0f) << 2) + (curSrc[2] >> 6)];
+        curDest[3] = charset[curSrc[2] & 0x3f];
+        
+        curDest += 4;
+        curSrc += 3;
+        srcLen -= 3;
+        destLen -= 4;
+    }
+    
+    // now deal with the tail (<=2 bytes)
+    switch (srcLen) {
+        case 0:
+            // Nothing left; nothing more to do.
+            break;
+        case 1:
+            // One byte left: this encodes to two characters, and (optionally)
+            // two pad characters to round out the four-character cypherblock.
+            _GTMDevAssert(destLen >= 2, @"our calc for encoded length was wrong");
+            curDest[0] = charset[curSrc[0] >> 2];
+            curDest[1] = charset[(curSrc[0] & 0x03) << 4];
+            curDest += 2;
+            if (padded) {
+                _GTMDevAssert(destLen >= 4, @"our calc for encoded length was wrong");
+                curDest[0] = kBase64PaddingChar;
+                curDest[1] = kBase64PaddingChar;
+                curDest += 2;
+            }
+            break;
+        case 2:
+            // Two bytes left: this encodes to three characters, and (optionally)
+            // one pad character to round out the four-character cypherblock.
+            _GTMDevAssert(destLen >= 3, @"our calc for encoded length was wrong");
+            curDest[0] = charset[curSrc[0] >> 2];
+            curDest[1] = charset[((curSrc[0] & 0x03) << 4) + (curSrc[1] >> 4)];
+            curDest[2] = charset[(curSrc[1] & 0x0f) << 2];
+            curDest += 3;
+            if (padded) {
+                _GTMDevAssert(destLen >= 4, @"our calc for encoded length was wrong");
+                curDest[0] = kBase64PaddingChar;
+                curDest += 1;
+            }
+            break;
+    }
+    // return the length
+    return (curDest - destBytes);
+}
+
+//
+// baseDecode:srcLen:destBytes:destLen:charset:requirePadding:
+//
+// Decodes the buffer into the larger.  returns the length of the decoded
+// data, or zero for an error.
+// |charset| is the character decoding buffer to use
+//
+// Returns:
+//   the length of the encoded data.  zero if any error.
+//
++(NSUInteger)baseDecode:(const char *)srcBytes
+                 srcLen:(NSUInteger)srcLen
+              destBytes:(char *)destBytes
+                destLen:(NSUInteger)destLen
+                charset:(const char *)charset
+         requirePadding:(BOOL)requirePadding {
+    if (!srcLen || !destLen || !srcBytes || !destBytes) {
+        return 0;
+    }
+    
+    int decode;
+    NSUInteger destIndex = 0;
+    int state = 0;
+    char ch = 0;
+    while (srcLen-- && (ch = *srcBytes++) != 0)  {
+        if (IsSpace(ch))  // Skip whitespace
+            continue;
+        
+        if (ch == kBase64PaddingChar)
+            break;
+        
+        decode = charset[(unsigned int)ch];
+        if (decode == kBase64InvalidChar)
+            return 0;
+        
+        // Four cyphertext characters decode to three bytes.
+        // Therefore we can be in one of four states.
+        switch (state) {
+            case 0:
+                // We're at the beginning of a four-character cyphertext block.
+                // This sets the high six bits of the first byte of the
+                // plaintext block.
+                _GTMDevAssert(destIndex < destLen, @"our calc for decoded length was wrong");
+                destBytes[destIndex] = decode << 2;
+                state = 1;
+                break;
+            case 1:
+                // We're one character into a four-character cyphertext block.
+                // This sets the low two bits of the first plaintext byte,
+                // and the high four bits of the second plaintext byte.
+                _GTMDevAssert((destIndex+1) < destLen, @"our calc for decoded length was wrong");
+                destBytes[destIndex] |= decode >> 4;
+                destBytes[destIndex+1] = (decode & 0x0f) << 4;
+                destIndex++;
+                state = 2;
+                break;
+            case 2:
+                // We're two characters into a four-character cyphertext block.
+                // This sets the low four bits of the second plaintext
+                // byte, and the high two bits of the third plaintext byte.
+                // However, if this is the end of data, and those two
+                // bits are zero, it could be that those two bits are
+                // leftovers from the encoding of data that had a length
+                // of two mod three.
+                _GTMDevAssert((destIndex+1) < destLen, @"our calc for decoded length was wrong");
+                destBytes[destIndex] |= decode >> 2;
+                destBytes[destIndex+1] = (decode & 0x03) << 6;
+                destIndex++;
+                state = 3;
+                break;
+            case 3:
+                // We're at the last character of a four-character cyphertext block.
+                // This sets the low six bits of the third plaintext byte.
+                _GTMDevAssert(destIndex < destLen, @"our calc for decoded length was wrong");
+                destBytes[destIndex] |= decode;
+                destIndex++;
+                state = 0;
+                break;
+        }
+    }
+    
+    // We are done decoding Base-64 chars.  Let's see if we ended
+    //      on a byte boundary, and/or with erroneous trailing characters.
+    if (ch == kBase64PaddingChar) {               // We got a pad char
+        if ((state == 0) || (state == 1)) {
+            return 0;  // Invalid '=' in first or second position
+        }
+        if (srcLen == 0) {
+            if (state == 2) { // We run out of input but we still need another '='
+                return 0;
+            }
+            // Otherwise, we are in state 3 and only need this '='
+        } else {
+            if (state == 2) {  // need another '='
+                while ((ch = *srcBytes++) && (srcLen-- > 0)) {
+                    if (!IsSpace(ch))
+                        break;
+                }
+                if (ch != kBase64PaddingChar) {
+                    return 0;
+                }
+            }
+            // state = 1 or 2, check if all remain padding is space
+            while ((ch = *srcBytes++) && (srcLen-- > 0)) {
+                if (!IsSpace(ch)) {
+                    return 0;
+                }
+            }
+        }
+    } else {
+        // We ended by seeing the end of the string.
+        
+        if (requirePadding) {
+            // If we require padding, then anything but state 0 is an error.
+            if (state != 0) {
+                return 0;
+            }
+        } else {
+            // Make sure we have no partial bytes lying around.  Note that we do not
+            // require trailing '=', so states 2 and 3 are okay too.
+            if (state == 1) {
+                return 0;
+            }
+        }
+    }
+    
+    // If then next piece of output was valid and got written to it means we got a
+    // very carefully crafted input that appeared valid but contains some trailing
+    // bits past the real length, so just toss the thing.
+    if ((destIndex < destLen) &&
+        (destBytes[destIndex] != 0)) {
+        return 0;
+    }
+    
+    return destIndex;
+}
+
+@end
\ No newline at end of file
diff --git a/ivwen/ivwen/3rd/GTMBase64/GTMDefines.h b/ivwen/ivwen/3rd/GTMBase64/GTMDefines.h
new file mode 100755
index 00000000..81613270
--- /dev/null
+++ b/ivwen/ivwen/3rd/GTMBase64/GTMDefines.h
@@ -0,0 +1,388 @@
+//
+// GTMDefines.h
+//
+//  Copyright 2008 Google Inc.
+//
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License.  You may obtain a copy
+//  of the License at
+//
+//  http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+//
+
+// ============================================================================
+
+#include <AvailabilityMacros.h>
+#include <TargetConditionals.h>
+
+#if TARGET_OS_IPHONE
+#include <Availability.h>
+#endif //  TARGET_OS_IPHONE
+
+// Not all MAC_OS_X_VERSION_10_X macros defined in past SDKs
+#ifndef MAC_OS_X_VERSION_10_5
+#define MAC_OS_X_VERSION_10_5 1050
+#endif
+#ifndef MAC_OS_X_VERSION_10_6
+#define MAC_OS_X_VERSION_10_6 1060
+#endif
+
+// Not all __IPHONE_X macros defined in past SDKs
+#ifndef __IPHONE_2_1
+#define __IPHONE_2_1 20100
+#endif
+#ifndef __IPHONE_2_2
+#define __IPHONE_2_2 20200
+#endif
+#ifndef __IPHONE_3_0
+#define __IPHONE_3_0 30000
+#endif
+#ifndef __IPHONE_3_1
+#define __IPHONE_3_1 30100
+#endif
+#ifndef __IPHONE_3_2
+#define __IPHONE_3_2 30200
+#endif
+#ifndef __IPHONE_4_0
+#define __IPHONE_4_0 40000
+#endif
+
+// ----------------------------------------------------------------------------
+// CPP symbols that can be overridden in a prefix to control how the toolbox
+// is compiled.
+// ----------------------------------------------------------------------------
+
+
+// By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and
+// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens
+// when a validation fails. If you implement your own validators, you may want
+// to control their internals using the same macros for consistency.
+#ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
+#define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT 0
+#endif
+
+// Give ourselves a consistent way to do inlines.  Apple's macros even use
+// a few different actual definitions, so we're based off of the foundation
+// one.
+#if !defined(GTM_INLINE)
+#if defined (__GNUC__) && (__GNUC__ == 4)
+#define GTM_INLINE static __inline__ __attribute__((always_inline))
+#else
+#define GTM_INLINE static __inline__
+#endif
+#endif
+
+// Give ourselves a consistent way of doing externs that links up nicely
+// when mixing objc and objc++
+#if !defined (GTM_EXTERN)
+#if defined __cplusplus
+#define GTM_EXTERN extern "C"
+#define GTM_EXTERN_C_BEGIN extern "C" {
+#define GTM_EXTERN_C_END }
+#else
+#define GTM_EXTERN extern
+#define GTM_EXTERN_C_BEGIN
+#define GTM_EXTERN_C_END
+#endif
+#endif
+
+// Give ourselves a consistent way of exporting things if we have visibility
+// set to hidden.
+#if !defined (GTM_EXPORT)
+#define GTM_EXPORT __attribute__((visibility("default")))
+#endif
+
+// Give ourselves a consistent way of declaring something as unused. This
+// doesn't use __unused because that is only supported in gcc 4.2 and greater.
+#if !defined (GTM_UNUSED)
+#define GTM_UNUSED(x) ((void)(x))
+#endif
+
+// _GTMDevLog & _GTMDevAssert
+//
+// _GTMDevLog & _GTMDevAssert are meant to be a very lightweight shell for
+// developer level errors.  This implementation simply macros to NSLog/NSAssert.
+// It is not intended to be a general logging/reporting system.
+//
+// Please see http://code.google.com/p/google-toolbox-for-mac/wiki/DevLogNAssert
+// for a little more background on the usage of these macros.
+//
+//    _GTMDevLog           log some error/problem in debug builds
+//    _GTMDevAssert        assert if conditon isn't met w/in a method/function
+//                           in all builds.
+//
+// To replace this system, just provide different macro definitions in your
+// prefix header.  Remember, any implementation you provide *must* be thread
+// safe since this could be called by anything in what ever situtation it has
+// been placed in.
+//
+
+// We only define the simple macros if nothing else has defined this.
+#ifndef _GTMDevLog
+
+#ifdef DEBUG
+#define _GTMDevLog(...) NSLog(__VA_ARGS__)
+#else
+#define _GTMDevLog(...) do { } while (0)
+#endif
+
+#endif // _GTMDevLog
+
+#ifndef _GTMDevAssert
+// we directly invoke the NSAssert handler so we can pass on the varargs
+// (NSAssert doesn't have a macro we can use that takes varargs)
+#if !defined(NS_BLOCK_ASSERTIONS)
+#define _GTMDevAssert(condition, ...)                                       \
+do {                                                                      \
+if (!(condition)) {                                                     \
+[[NSAssertionHandler currentHandler]                                  \
+handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \
+file:[NSString stringWithUTF8String:__FILE__]  \
+lineNumber:__LINE__                                  \
+description:__VA_ARGS__];                             \
+}                                                                       \
+} while(0)
+#else // !defined(NS_BLOCK_ASSERTIONS)
+#define _GTMDevAssert(condition, ...) do { } while (0)
+#endif // !defined(NS_BLOCK_ASSERTIONS)
+
+#endif // _GTMDevAssert
+
+// _GTMCompileAssert
+// _GTMCompileAssert is an assert that is meant to fire at compile time if you
+// want to check things at compile instead of runtime. For example if you
+// want to check that a wchar is 4 bytes instead of 2 you would use
+// _GTMCompileAssert(sizeof(wchar_t) == 4, wchar_t_is_4_bytes_on_OS_X)
+// Note that the second "arg" is not in quotes, and must be a valid processor
+// symbol in it's own right (no spaces, punctuation etc).
+
+// Wrapping this in an #ifndef allows external groups to define their own
+// compile time assert scheme.
+#ifndef _GTMCompileAssert
+// We got this technique from here:
+// http://unixjunkie.blogspot.com/2007/10/better-compile-time-asserts_29.html
+
+#define _GTMCompileAssertSymbolInner(line, msg) _GTMCOMPILEASSERT ## line ## __ ## msg
+#define _GTMCompileAssertSymbol(line, msg) _GTMCompileAssertSymbolInner(line, msg)
+#define _GTMCompileAssert(test, msg) \
+typedef char _GTMCompileAssertSymbol(__LINE__, msg) [ ((test) ? 1 : -1) ]
+#endif // _GTMCompileAssert
+
+// ----------------------------------------------------------------------------
+// CPP symbols defined based on the project settings so the GTM code has
+// simple things to test against w/o scattering the knowledge of project
+// setting through all the code.
+// ----------------------------------------------------------------------------
+
+// Provide a single constant CPP symbol that all of GTM uses for ifdefing
+// iPhone code.
+#if TARGET_OS_IPHONE // iPhone SDK
+// For iPhone specific stuff
+#define GTM_IPHONE_SDK 1
+#if TARGET_IPHONE_SIMULATOR
+#define GTM_IPHONE_SIMULATOR 1
+#else
+#define GTM_IPHONE_DEVICE 1
+#endif  // TARGET_IPHONE_SIMULATOR
+#else
+// For MacOS specific stuff
+#define GTM_MACOS_SDK 1
+#endif
+
+// Some of our own availability macros
+#if GTM_MACOS_SDK
+#define GTM_AVAILABLE_ONLY_ON_IPHONE UNAVAILABLE_ATTRIBUTE
+#define GTM_AVAILABLE_ONLY_ON_MACOS
+#else
+#define GTM_AVAILABLE_ONLY_ON_IPHONE
+#define GTM_AVAILABLE_ONLY_ON_MACOS UNAVAILABLE_ATTRIBUTE
+#endif
+
+// Provide a symbol to include/exclude extra code for GC support.  (This mainly
+// just controls the inclusion of finalize methods).
+#ifndef GTM_SUPPORT_GC
+#if GTM_IPHONE_SDK
+// iPhone never needs GC
+#define GTM_SUPPORT_GC 0
+#else
+// We can't find a symbol to tell if GC is supported/required, so best we
+// do on Mac targets is include it if we're on 10.5 or later.
+#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
+#define GTM_SUPPORT_GC 0
+#else
+#define GTM_SUPPORT_GC 1
+#endif
+#endif
+#endif
+
+// To simplify support for 64bit (and Leopard in general), we provide the type
+// defines for non Leopard SDKs
+#if !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
+// NSInteger/NSUInteger and Max/Mins
+#ifndef NSINTEGER_DEFINED
+#if __LP64__ || NS_BUILD_32_LIKE_64
+typedef long NSInteger;
+typedef unsigned long NSUInteger;
+#else
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#endif
+#define NSIntegerMax    LONG_MAX
+#define NSIntegerMin    LONG_MIN
+#define NSUIntegerMax   ULONG_MAX
+#define NSINTEGER_DEFINED 1
+#endif  // NSINTEGER_DEFINED
+// CGFloat
+#ifndef CGFLOAT_DEFINED
+#if defined(__LP64__) && __LP64__
+// This really is an untested path (64bit on Tiger?)
+typedef double CGFloat;
+#define CGFLOAT_MIN DBL_MIN
+#define CGFLOAT_MAX DBL_MAX
+#define CGFLOAT_IS_DOUBLE 1
+#else /* !defined(__LP64__) || !__LP64__ */
+typedef float CGFloat;
+#define CGFLOAT_MIN FLT_MIN
+#define CGFLOAT_MAX FLT_MAX
+#define CGFLOAT_IS_DOUBLE 0
+#endif /* !defined(__LP64__) || !__LP64__ */
+#define CGFLOAT_DEFINED 1
+#endif // CGFLOAT_DEFINED
+#endif  // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
+
+// Some support for advanced clang static analysis functionality
+// See http://clang-analyzer.llvm.org/annotations.html
+#ifndef __has_feature      // Optional.
+#define __has_feature(x) 0 // Compatibility with non-clang compilers.
+#endif
+
+#ifndef NS_RETURNS_RETAINED
+#if __has_feature(attribute_ns_returns_retained)
+#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
+#else
+#define NS_RETURNS_RETAINED
+#endif
+#endif
+
+#ifndef NS_RETURNS_NOT_RETAINED
+#if __has_feature(attribute_ns_returns_not_retained)
+#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
+#else
+#define NS_RETURNS_NOT_RETAINED
+#endif
+#endif
+
+#ifndef CF_RETURNS_RETAINED
+#if __has_feature(attribute_cf_returns_retained)
+#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
+#else
+#define CF_RETURNS_RETAINED
+#endif
+#endif
+
+#ifndef CF_RETURNS_NOT_RETAINED
+#if __has_feature(attribute_cf_returns_not_retained)
+#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
+#else
+#define CF_RETURNS_NOT_RETAINED
+#endif
+#endif
+
+// Defined on 10.6 and above.
+#ifndef NS_FORMAT_ARGUMENT
+#define NS_FORMAT_ARGUMENT(A)
+#endif
+
+// Defined on 10.6 and above.
+#ifndef NS_FORMAT_FUNCTION
+#define NS_FORMAT_FUNCTION(F,A)
+#endif
+
+// Defined on 10.6 and above.
+#ifndef CF_FORMAT_ARGUMENT
+#define CF_FORMAT_ARGUMENT(A)
+#endif
+
+// Defined on 10.6 and above.
+#ifndef CF_FORMAT_FUNCTION
+#define CF_FORMAT_FUNCTION(F,A)
+#endif
+
+#ifndef GTM_NONNULL
+#define GTM_NONNULL(x) __attribute__((nonnull(x)))
+#endif
+
+#ifdef __OBJC__
+
+// Declared here so that it can easily be used for logging tracking if
+// necessary. See GTMUnitTestDevLog.h for details.
+@class NSString;
+GTM_EXTERN void _GTMUnitTestDevLog(NSString *format, ...);
+
+// Macro to allow you to create NSStrings out of other macros.
+// #define FOO foo
+// NSString *fooString = GTM_NSSTRINGIFY(FOO);
+#if !defined (GTM_NSSTRINGIFY)
+#define GTM_NSSTRINGIFY_INNER(x) @#x
+#define GTM_NSSTRINGIFY(x) GTM_NSSTRINGIFY_INNER(x)
+#endif
+
+// Macro to allow fast enumeration when building for 10.5 or later, and
+// reliance on NSEnumerator for 10.4.  Remember, NSDictionary w/ FastEnumeration
+// does keys, so pick the right thing, nothing is done on the FastEnumeration
+// side to be sure you're getting what you wanted.
+#ifndef GTM_FOREACH_OBJECT
+#if TARGET_OS_IPHONE || !(MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
+#define GTM_FOREACH_ENUMEREE(element, enumeration) \
+for (element in enumeration)
+#define GTM_FOREACH_OBJECT(element, collection) \
+for (element in collection)
+#define GTM_FOREACH_KEY(element, collection) \
+for (element in collection)
+#else
+#define GTM_FOREACH_ENUMEREE(element, enumeration) \
+for (NSEnumerator *_ ## element ## _enum = enumeration; \
+(element = [_ ## element ## _enum nextObject]) != nil; )
+#define GTM_FOREACH_OBJECT(element, collection) \
+GTM_FOREACH_ENUMEREE(element, [collection objectEnumerator])
+#define GTM_FOREACH_KEY(element, collection) \
+GTM_FOREACH_ENUMEREE(element, [collection keyEnumerator])
+#endif
+#endif
+
+// ============================================================================
+
+// To simplify support for both Leopard and Snow Leopard we declare
+// the Snow Leopard protocols that we need here.
+#if !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
+#define GTM_10_6_PROTOCOLS_DEFINED 1
+@protocol NSConnectionDelegate
+@end
+@protocol NSAnimationDelegate
+@end
+@protocol NSImageDelegate
+@end
+@protocol NSTabViewDelegate
+@end
+#endif  // !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
+
+// GTM_SEL_STRING is for specifying selector (usually property) names to KVC
+// or KVO methods.
+// In debug it will generate warnings for undeclared selectors if
+// -Wunknown-selector is turned on.
+// In release it will have no runtime overhead.
+#ifndef GTM_SEL_STRING
+#ifdef DEBUG
+#define GTM_SEL_STRING(selName) NSStringFromSelector(@selector(selName))
+#else
+#define GTM_SEL_STRING(selName) @#selName
+#endif  // DEBUG
+#endif  // GTM_SEL_STRING
+
+#endif // __OBJC__
\ No newline at end of file
diff --git a/ivwen/ivwen/3rd/HappyDNS/Common/QNDnsManager.m b/ivwen/ivwen/3rd/HappyDNS/Common/QNDnsManager.m
index 47501b9d..e5ee398f 100644
--- a/ivwen/ivwen/3rd/HappyDNS/Common/QNDnsManager.m
+++ b/ivwen/ivwen/3rd/HappyDNS/Common/QNDnsManager.m
@@ -81,9 +81,15 @@ static inline UInt32 bits_leadingZeros(UInt32 x) {
 
 static NSArray *records2Ips(NSArray *records) {
     NSMutableArray *array = [[NSMutableArray alloc] init];
-    for (QNRecord *r in records) {
+//    for (QNRecord *r in records) {
+//        [array addObject:r.value];
+//    }
+    
+    for (int i = 0; i < records.count; i ++) {
+        QNRecord *r = records[i];
         [array addObject:r.value];
     }
+    
     return array;
 }
 
diff --git a/ivwen/ivwen/3rd/MJRefresh/Custom/Header/MJRefreshGifHeader.m b/ivwen/ivwen/3rd/MJRefresh/Custom/Header/MJRefreshGifHeader.m
index a5b9c2c9..c1ba427b 100755
--- a/ivwen/ivwen/3rd/MJRefresh/Custom/Header/MJRefreshGifHeader.m
+++ b/ivwen/ivwen/3rd/MJRefresh/Custom/Header/MJRefreshGifHeader.m
@@ -21,7 +21,7 @@ @implementation MJRefreshGifHeader
 - (UIImageView *)gifView
 {
     if (!_gifView) { 
-        UIImageView *gifView = [[UIImageView alloc] init]; 
+        UIImageView *gifView = [[UIImageView alloc] init];
         [self addSubview:_gifView = gifView]; 
     } 
     return _gifView; 
@@ -84,9 +84,6 @@ - (void)placeSubviews
     self.gifView.frame = self.bounds;
     if (self.stateLabel.hidden && self.lastUpdatedTimeLabel.hidden) {
         self.gifView.contentMode = UIViewContentModeCenter;
-//        CGRect tempRect = self.gifView.frame;
-//        tempRect.origin.y = tempRect.origin.y + 10;
-//        self.gifView.frame = tempRect;
         
     } else {
         self.gifView.contentMode = UIViewContentModeRight;
diff --git a/ivwen/ivwen/3rd/SDWebImage/SDWebImageDownloader.m b/ivwen/ivwen/3rd/SDWebImage/SDWebImageDownloader.m
index a649a240..c44bcd80 100755
--- a/ivwen/ivwen/3rd/SDWebImage/SDWebImageDownloader.m
+++ b/ivwen/ivwen/3rd/SDWebImage/SDWebImageDownloader.m
@@ -63,7 +63,7 @@ - (id)init {
     if ((self = [super init])) {
         _operationClass = [SDWebImageDownloaderOperation class];
         _shouldDecompressImages = YES;
-        _executionOrder = SDWebImageDownloaderFIFOExecutionOrder;
+        _executionOrder = SDWebImageDownloaderLIFOExecutionOrder;
         _downloadQueue = [NSOperationQueue new];
         _downloadQueue.maxConcurrentOperationCount = 6;
         _URLCallbacks = [NSMutableDictionary new];
diff --git a/ivwen/ivwen/3rd/SRPictureBrowser/SRPictureBrowser.m b/ivwen/ivwen/3rd/SRPictureBrowser/SRPictureBrowser.m
index 2a9f9432..0952f395 100755
--- a/ivwen/ivwen/3rd/SRPictureBrowser/SRPictureBrowser.m
+++ b/ivwen/ivwen/3rd/SRPictureBrowser/SRPictureBrowser.m
@@ -217,6 +217,8 @@ - (void)dismiss {
     }];
     
     [[UIApplication sharedApplication] setStatusBarHidden:NO];
+    
+    [AppManager sharedManager].pickImageAndCommentClick = NO;
 }
 
 - (void)updateCurrentPictureView {
diff --git a/ivwen/ivwen/3rd/UMeng/UMAnalytics_Sdk_3.5.9/libMobClickLibrary.a b/ivwen/ivwen/3rd/UMeng/UMAnalytics_Sdk_3.5.9/libMobClickLibrary.a
deleted file mode 100644
index 57f38690..00000000
Binary files a/ivwen/ivwen/3rd/UMeng/UMAnalytics_Sdk_3.5.9/libMobClickLibrary.a and /dev/null differ
diff --git a/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Headers b/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Headers
new file mode 120000
index 00000000..a177d2a6
--- /dev/null
+++ b/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Headers
@@ -0,0 +1 @@
+Versions/Current/Headers
\ No newline at end of file
diff --git a/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/UMMobClick b/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/UMMobClick
new file mode 120000
index 00000000..4f563f01
--- /dev/null
+++ b/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/UMMobClick
@@ -0,0 +1 @@
+Versions/Current/UMMobClick
\ No newline at end of file
diff --git a/ivwen/ivwen/3rd/UMeng/UMAnalytics_Sdk_3.5.9/MobClick.h b/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Versions/A/Headers/MobClick.h
similarity index 65%
rename from ivwen/ivwen/3rd/UMeng/UMAnalytics_Sdk_3.5.9/MobClick.h
rename to ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Versions/A/Headers/MobClick.h
index 110c4632..c5997c46 100644
--- a/ivwen/ivwen/3rd/UMeng/UMAnalytics_Sdk_3.5.9/MobClick.h
+++ b/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Versions/A/Headers/MobClick.h
@@ -2,34 +2,69 @@
 //  MobClick.h
 //  Analytics
 //
-//  Copyright (C) 2010-2014 Umeng.com . All rights reserved.
+//  Copyright (C) 2010-2016 Umeng.com . All rights reserved.
 
 #import <UIKit/UIKit.h>
 #import <Foundation/Foundation.h>
 
-#define UMOnlineConfigDidFinishedNotification @"OnlineConfigDidFinishedNotification"
 #define XcodeAppVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]
+typedef void(^CallbackBlock)();
 
 /**
- REALTIME只在模拟器和DEBUG模式下生效,真机的release模式会自动改成BATCH。
+  REALTIME只在“集成测试”设备的DEBUG模式下有效,其它情况下的REALTIME会改为使用BATCH策略。
  */
 typedef enum {
-    REALTIME = 0,       //实时发送              (只在测试模式下有效)
+    REALTIME = 0,       //实时发送              (只在“集成测试”设备的DEBUG模式下有效)
     BATCH = 1,          //启动发送
     SEND_INTERVAL = 6,  //最小间隔发送           ([90-86400]s, default 90s)
-    
-    // deprecated strategy:
-    SENDDAILY = 4,      //每日发送              (not available)
-    SENDWIFIONLY = 5,   //仅在WIFI下时启动发送   (not available)
-    SEND_ON_EXIT = 7    //进入后台时发送         (not avilable, will be support later)
+    SMART_POLICY = 8,
 } ReportPolicy;
 
-@class CLLocation;
-
+/**
+ 统计的场景类别,默认为普通统计;若使用游戏统计API,则需选择游戏场景类别,如E_UM_GAME。
+ */
+typedef NS_ENUM (NSUInteger, eScenarioType)
+{
+    E_UM_NORMAL = 0,    // default value
+    E_UM_GAME = 1,      // game
+};
+
+/** @brief 统计SDK的配置实例,具体参照该类成员的参数定义
+ * 示例代码: UMConfigInstance.appKey = @"xxxxxxxxxxxxxx...";
+ *         UMConfigInstance.token = @"yyyyyyyy....";
+ *         [MobClick startWithConfigure:UMConfigInstance];
+ */
+#define UMConfigInstance [UMAnalyticsConfig sharedInstance]
+@interface UMAnalyticsConfig : NSObject
+/** required:  appkey string */
+@property(nonatomic, copy) NSString *appKey;
+/** optional:  default: nil*/
+@property(nonatomic, copy) NSString *secret;
+/** optional:  default: "App Store"*/
+@property(nonatomic, copy) NSString *channelId;
+/** optional:  default: YES */
+@property(nonatomic) BOOL  bCrashReportEnabled;
+/** optional:  default: BATCH */
+@property(nonatomic) ReportPolicy   ePolicy;
+/** optional:  default: E_UM_NORMAL */
+@property(nonatomic) eScenarioType  eSType;
+
++ (instancetype)sharedInstance;
+@end
 
+@class CLLocation;
 @interface MobClick : NSObject <UIAlertViewDelegate>
 
 #pragma mark basics
+///---------------------------------------------------------------------------------------
+/// @name  初始化统计
+///---------------------------------------------------------------------------------------
+
+/** 初始化友盟统计模块
+ @param UMAnalyticsConfig 实例类,具体参照该类成员的参数定义
+ @return void
+ */
++ (void) startWithConfigure:(UMAnalyticsConfig *)configure;
 
 ///---------------------------------------------------------------------------------------
 /// @name  设置
@@ -54,49 +89,21 @@ typedef enum {
  */
 + (void)setLogEnabled:(BOOL)value;
 
-/** 设置是否开启background模式, 默认YES.
- @param value 为YES,SDK会确保在app进入后台的短暂时间保存日志信息的完整性,对于已支持background模式和一般app不会有影响.
-        如果该模式影响某些App在切换到后台的功能,也可将该值设置为NO.
- @return void.
- */
-+ (void)setBackgroundTaskEnabled:(BOOL)value;
-
 /** 设置是否对日志信息进行加密, 默认NO(不加密).
  @param value 设置为YES, umeng SDK 会将日志信息做加密处理
  @return void.
  */
 + (void)setEncryptEnabled:(BOOL)value;
 
-///---------------------------------------------------------------------------------------
-/// @name  开启统计
-///---------------------------------------------------------------------------------------
-
-/** 初始化友盟统计模块
- @param appKey 友盟appKey.
- @return void
-*/
-+ (void)startWithAppkey:(NSString *)appKey;
-
-/** 初始化友盟统计模块
- @param appKey 友盟appKey.
- @param reportPolicy 发送策略, 默认值为:BATCH,即“启动发送”模式
- @param channelId 渠道名称,为nil或@""时, 默认为@"App Store"渠道
- @return void
- */
-+ (void)startWithAppkey:(NSString *)appKey reportPolicy:(ReportPolicy)rp channelId:(NSString *)cid;
-
 /** 当reportPolicy == SEND_INTERVAL 时设定log发送间隔
  @param second 单位为秒,最小90秒,最大86400秒(24hour).
  @return void.
 */
 + (void)setLogSendInterval:(double)second;
 
-/** 设置日志延迟发送
- @param second 设置一个[0, second]范围的延迟发送秒数,最大值1800s.
- @return void
- */
-+ (void)setLatency:(int)second;
 
+
+#pragma mark event logs
 ///---------------------------------------------------------------------------------------
 /// @name  页面计时
 ///---------------------------------------------------------------------------------------
@@ -105,7 +112,7 @@ typedef enum {
  @param pageName 统计的页面名称.
  @param seconds 单位为秒,int.
  @return void.
-*/
+ */
 + (void)logPageView:(NSString *)pageName seconds:(int)seconds;
 
 /** 自动页面时长统计, 开始记录某个页面展示时长.
@@ -124,11 +131,19 @@ typedef enum {
  */
 + (void)endLogPageView:(NSString *)pageName;
 
-#pragma mark event logs
 
 ///---------------------------------------------------------------------------------------
 /// @name  事件统计
 ///---------------------------------------------------------------------------------------
+/** 结构化事件
+ 使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID。
+ 
+ @param  keyPath 字符串数组代表的结构化事件路径,其长度最大为8,不能使用unicode 48以内的字符,keyPath[0]必须在网站注册事件ID.
+ @param  value 事件的数值
+ @param  (optional) label 标签
+ @return void.
+ */
++ (void)event:(NSArray *)keyPath value:(int)value label:(NSString *)label;
 
 /** 自定义事件,数量统计.
 使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID
@@ -161,16 +176,16 @@ typedef enum {
  @param millisecond 自己计时需要的话需要传毫秒进来
  @return void.
  
- 
  @warning 每个event的attributes不能超过10个
-    eventId、attributes中key和value都不能使用空格和特殊字符,且长度不能超过255个字符(否则将截取前255个字符)
+    eventId、attributes中key和value都不能使用空格和特殊字符,必须是NSString,且长度不能超过255个字符(否则将截取前255个字符)
     id, ts, du是保留字段,不能作为eventId及key的名称
-
 */
 + (void)beginEvent:(NSString *)eventId;
+
 /** 自定义事件,时长统计.
  使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
  */
+
 + (void)endEvent:(NSString *)eventId;
 /** 自定义事件,时长统计.
  使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID.
@@ -208,61 +223,21 @@ typedef enum {
 + (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes durations:(int)millisecond;
 
 
-#pragma mark AutoUpdate and Online Configure
-///---------------------------------------------------------------------------------------
-/// @name  按渠道自动更新
-///---------------------------------------------------------------------------------------
-
-/** 按渠道检测更新
-    检查当前app是否有更新,有则弹出UIAlertView提示用户,当用户点击升级按钮时app会跳转到您预先设置的网址。
-    无更新不做任何操作。
-    需要先在服务器端设置app版本信息,默认渠道是App Store.
+#pragma mark - user methods
+/** active user sign-in.
+ 使用sign-In函数后,如果结束该PUID的统计,需要调用sign-Off函数
+ @param puid : user's ID
+ @param provider : 不能以下划线"_"开头,使用大写字母和数字标识; 如果是上市公司,建议使用股票代码。
  @return void.
  */
-+ (void)checkUpdate;
++ (void)profileSignInWithPUID:(NSString *)puid;
++ (void)profileSignInWithPUID:(NSString *)puid provider:(NSString *)provider;
 
-/** 按渠道检测更新
-    检查当前app是否有更新,有则弹出UIAlertView提示用户,当用户点击升级按钮时app会跳转到您预先设置的网址。
-    无更新不做任何操作。
-    需要先在服务器端设置app版本信息,默认渠道是App Store.
- 
- @param title 对应UIAlertView的title.
- @param cancelTitle 对应UIAlertView的cancelTitle.
- @param otherTitle 对应UIAlertView的otherTitle.
+/** active user sign-off.
+ 停止sign-in PUID的统计
  @return void.
  */
-+ (void)checkUpdate:(NSString *)title cancelButtonTitle:(NSString *)cancelTitle otherButtonTitles:(NSString *)otherTitle;
-
-/** 设置自由控制更新callback函数
-    若程序需要自由控制收到更新内容后的流程可设置delegate和callback函数来完成
- 
- @param delegate 需要自定义checkUpdate的对象.
- @param callBackSelectorWithDictionary 当checkUpdate事件完成时此方法会被调用,同时标记app更新信息的字典被传回.
- */
-+ (void)checkUpdateWithDelegate:(id)delegate selector:(SEL)callBackSelectorWithDictionary;
-
-
-///---------------------------------------------------------------------------------------
-/// @name  在线参数:可以动态设定应用中的参数值
-///---------------------------------------------------------------------------------------
-
-/** 此方法会检查并下载服务端设置的在线参数,例如可在线更改SDK端发送策略。
-    请在[MobClick startWithAppkey:]方法之后调用;
-    监听在线参数更新是否完成,可注册UMOnlineConfigDidFinishedNotification通知
- @param .
- @return void.
- */
-+ (void)updateOnlineConfig;
-
-/** 返回已缓存的在线参数值
-    带参数的方法获取某个key的值,不带参数的获取所有的在线参数.
-    需要先调用updateOnlineConfig才能使用,如果想知道在线参数是否完成完成,请监听UMOnlineConfigDidFinishedNotification
- @param key
- @return (NSString *) .
- */
-+ (NSString *)getConfigParams:(NSString *)key;
-+ (NSDictionary *)getConfigParams;
-+ (NSString *)getAdURL;
++ (void)profileSignOff;
 
 ///---------------------------------------------------------------------------------------
 /// @name 地理位置设置
@@ -282,7 +257,6 @@ typedef enum {
  */
 + (void)setLocation:(CLLocation *)location;
 
-
 ///---------------------------------------------------------------------------------------
 /// @name Utility函数
 ///---------------------------------------------------------------------------------------
@@ -296,21 +270,12 @@ typedef enum {
 + (BOOL)isPirated;
 
 #pragma mark DEPRECATED
-
-+ (void)event:(NSString *)eventId acc:(NSInteger)accumulation;
-/** 自定义事件,数量统计.
- 使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID
- */
-+ (void)event:(NSString *)eventId label:(NSString *)label acc:(NSInteger)accumulation;
-/** 自定义事件,数量统计.
- 使用前,请先到友盟App管理后台的设置->编辑自定义事件 中添加相应的事件ID,然后在工程中传入相应的事件ID
- */
-
 /** 友盟模块启动
- [MobClick startWithAppkey:]通常在application:didFinishLaunchingWithOptions:里被调用监听App启动和退出事件,
- 如果开发者无法在此处添加友盟的[MobClick startWithAppkey:]方法,App的启动事件可能会无法监听,此时需要手动调用[MobClick startSession:nil]来启动友盟的session。
+ [MobClick startWithConfigure:]通常在application:didFinishLaunchingWithOptions:里被调用监听App启动和退出事件,
+ 如果开发者无法在此处添加友盟的[MobClick startWithConfigure:]方法,App的启动事件可能会无法监听,此时需要手动调用[MobClick startSession:nil]来启动友盟的session。
  上述情况通常发生在某些第三方框架生成的app里,普通app不用关注该API.
  */
 + (void)startSession:(NSNotification *)notification;
 
++ (void)setCrashCBBlock:(CallbackBlock)cbBlock;
 @end
diff --git a/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Versions/A/Headers/MobClickGameAnalytics.h b/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Versions/A/Headers/MobClickGameAnalytics.h
new file mode 100644
index 00000000..f8b9fa10
--- /dev/null
+++ b/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Versions/A/Headers/MobClickGameAnalytics.h
@@ -0,0 +1,184 @@
+//
+//  MobClickGameAnalytics.h
+//  Analytics
+//
+//  Copyright (C) 2010-2014 Umeng.com . All rights reserved.
+
+@interface MobClickGameAnalytics : NSObject
+
+#pragma mark - account function
+/** active user sign-in.
+ 使用sign-In函数后,如果结束该PUID的统计,需要调用sign-Off函数
+ @param puid : user's ID
+ @param provider : 不能以下划线"_"开头,使用大写字母和数字标识; 如果是上市公司,建议使用股票代码。
+ @return void.
+ */
++ (void)profileSignInWithPUID:(NSString *)puid;
++ (void)profileSignInWithPUID:(NSString *)puid provider:(NSString *)provider;
+
+/** active user sign-off.
+ 停止sign-in PUID的统计
+ @return void.
+ */
++ (void)profileSignOff;
+
+#pragma mark GameLevel methods
+///---------------------------------------------------------------------------------------
+/// @name  set game level
+///---------------------------------------------------------------------------------------
+
+/** 设置玩家的等级.
+ */
+
+/** 设置玩家等级属性.
+ @param level 玩家等级
+ @return void
+ */
++ (void)setUserLevelId:(int)level;
+
+///---------------------------------------------------------------------------------------
+/// @name  关卡统计
+///---------------------------------------------------------------------------------------
+
+/** 记录玩家进入关卡,通过关卡及失败的情况.
+ */
+
+
+/** 进入关卡.
+ @param level 关卡
+ @return void
+ */
++ (void)startLevel:(NSString *)level;
+
+/** 通过关卡.
+ @param level 关卡,如果level == nil 则为当前关卡
+ @return void
+ */
++ (void)finishLevel:(NSString *)level;
+
+/** 未通过关卡.
+ @param level 关卡,如果level == nil 则为当前关卡
+ @return void
+ */
+
++ (void)failLevel:(NSString *)level;
+
+
+#pragma mark -
+#pragma mark Pay methods
+
+///---------------------------------------------------------------------------------------
+/// @name  支付统计
+///---------------------------------------------------------------------------------------
+
+/** 记录玩家交易兑换货币的情况
+ @param currencyAmount 现金或等价物总额
+ @param currencyType 为ISO4217定义的3位字母代码,如CNY,USD等(如使用其它自定义等价物作为现金,可使用ISO4217中未定义的3位字母组合传入货币类型)
+ @param virtualAmount 虚拟币数量
+ @param channel 支付渠道
+ @param orderId 交易订单ID
+ @return void
+ */
++ (void)exchange:(NSString *)orderId currencyAmount:(double)currencyAmount currencyType:(NSString *)currencyType virtualCurrencyAmount:(double)virtualAmount paychannel:(int)channel;
+
+/** 玩家支付货币兑换虚拟币.
+ @param cash 真实货币数量
+ @param source 支付渠道
+ @param coin 虚拟币数量
+ @return void
+ */
+
++ (void)pay:(double)cash source:(int)source coin:(double)coin;
+
+/** 玩家支付货币购买道具.
+ @param cash 真实货币数量
+ @param source 支付渠道
+ @param item 道具名称
+ @param amount 道具数量
+ @param price 道具单价
+ @return void
+ */
++ (void)pay:(double)cash source:(int)source item:(NSString *)item amount:(int)amount price:(double)price;
+
+
+#pragma mark -
+#pragma mark Buy methods
+
+///---------------------------------------------------------------------------------------
+/// @name  虚拟币购买统计
+///---------------------------------------------------------------------------------------
+
+/** 记录玩家使用虚拟币的消费情况
+ */
+
+
+/** 玩家使用虚拟币购买道具
+@param item 道具名称
+@param amount 道具数量
+@param price 道具单价
+@return void
+ */
++ (void)buy:(NSString *)item amount:(int)amount price:(double)price;
+
+
+#pragma mark -
+#pragma mark Use methods
+
+
+///---------------------------------------------------------------------------------------
+/// @name  道具消耗统计
+///---------------------------------------------------------------------------------------
+
+/** 记录玩家道具消费情况
+ */
+
+
+/** 玩家使用虚拟币购买道具
+@param item 道具名称
+@param amount 道具数量
+@param price 道具单价
+@return void
+ */
+
++ (void)use:(NSString *)item amount:(int)amount price:(double)price;
+
+
+#pragma mark -
+#pragma mark Bonus methods
+
+
+///---------------------------------------------------------------------------------------
+/// @name  虚拟币及道具奖励统计
+///---------------------------------------------------------------------------------------
+
+/** 记录玩家获赠虚拟币及道具的情况
+ */
+
+
+/** 玩家获虚拟币奖励
+@param coin 虚拟币数量
+@param source 奖励方式
+@return void
+ */
+
++ (void)bonus:(double)coin source:(int)source;
+
+/** 玩家获道具奖励
+@param item 道具名称
+@param amount 道具数量
+@param price 道具单价
+@param source 奖励方式
+@return void
+ */
+
++ (void)bonus:(NSString *)item amount:(int)amount price:(double)price source:(int)source;
+
+#pragma mark DEPRECATED
+
+//已经被新的setUserLevelId:方法替代,请使用新的API。
++ (void)setUserLevel:(NSString *)level;
+
+//已经被新的active user方法替代,请使用新的API。
++ (void)setUserID:(NSString *)userId sex:(int)sex age:(int)age platform:(NSString *)platform;
+
+@end
diff --git a/ivwen/ivwen/3rd/UMeng/UMAnalytics_Sdk_3.5.9/MobClickSocialAnalytics.h b/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Versions/A/Headers/MobClickSocialAnalytics.h
similarity index 99%
rename from ivwen/ivwen/3rd/UMeng/UMAnalytics_Sdk_3.5.9/MobClickSocialAnalytics.h
rename to ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Versions/A/Headers/MobClickSocialAnalytics.h
index e5a38152..6743c1c9 100644
--- a/ivwen/ivwen/3rd/UMeng/UMAnalytics_Sdk_3.5.9/MobClickSocialAnalytics.h
+++ b/ivwen/ivwen/3rd/UMeng/UMMobClick.framework/Versions/A/Headers/MobClickSocialAnalytics.h
@@ -93,7 +93,7 @@ typedef void (^MobClickSocialAnalyticsCompletion)(NSDictionary * response, NSErr
 
     MobClickSocialWeibo *tencentWeibo = [[MobClickSocialWeibo alloc] initWithPlatformType:UMSocialTypeTencent weiboId:nil userId:@"tencent123" param:@{@"gender":@"1"}];
     [MobClickSocialAnalytics postWeibos: