heavyrain lee 6 lat temu
rodzic
commit
f5de0011e1
100 zmienionych plików z 10023 dodań i 0 usunięć
  1. 2106 0
      wfuikit/WFChatUIKit.xcodeproj/project.pbxproj
  2. 7 0
      wfuikit/WFChatUIKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  3. 8 0
      wfuikit/WFChatUIKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  4. BIN
      wfuikit/WFChatUIKit.xcodeproj/project.xcworkspace/xcuserdata/tomlee.xcuserdatad/UserInterfaceState.xcuserstate
  5. 80 0
      wfuikit/WFChatUIKit.xcodeproj/xcshareddata/xcschemes/WFChatUIKit.xcscheme
  6. 249 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCAudioSession.h
  7. 48 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h
  8. 32 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCAudioSource.h
  9. 28 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCAudioTrack.h
  10. 52 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCVPixelBuffer.h
  11. 35 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCallbackLogger.h
  12. 30 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCameraPreviewView.h
  13. 56 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCameraVideoCapturer.h
  14. 44 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCertificate.h
  15. 24 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCodecSpecificInfo.h
  16. 27 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCodecSpecificInfoH264.h
  17. 175 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCConfiguration.h
  18. 130 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDataChannel.h
  19. 52 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDataChannelConfiguration.h
  20. 25 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDefaultVideoDecoderFactory.h
  21. 30 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDefaultVideoEncoderFactory.h
  22. 44 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDispatcher.h
  23. 70 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDtmfSender.h
  24. 44 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCEAGLVideoView.h
  25. 53 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCEncodedImage.h
  26. 46 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCFieldTrials.h
  27. 74 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCFileLogger.h
  28. 51 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCFileVideoCapturer.h
  29. 60 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCH264ProfileLevelId.h
  30. 22 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCI420Buffer.h
  31. 49 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCIceCandidate.h
  32. 114 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCIceServer.h
  33. 25 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCIntervalRange.h
  34. 37 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCLegacyStatsReport.h
  35. 66 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCLogging.h
  36. 46 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMTLVideoView.h
  37. 28 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMacros.h
  38. 54 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMediaConstraints.h
  39. 34 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMediaSource.h
  40. 49 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMediaStream.h
  41. 50 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMediaStreamTrack.h
  42. 23 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMetrics.h
  43. 48 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMetricsSampleInfo.h
  44. 23 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMutableI420Buffer.h
  45. 27 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMutableYUVPlanarBuffer.h
  46. 23 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCNativeI420Buffer.h
  47. 24 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCNativeMutableI420Buffer.h
  48. 316 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCPeerConnection.h
  49. 81 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCPeerConnectionFactory.h
  50. 42 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCPeerConnectionFactoryOptions.h
  51. 30 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtcpParameters.h
  52. 73 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpCodecParameters.h
  53. 42 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpEncodingParameters.h
  54. 28 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpFragmentationHeader.h
  55. 33 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpHeaderExtension.h
  56. 43 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpParameters.h
  57. 82 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpReceiver.h
  58. 50 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpSender.h
  59. 128 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpTransceiver.h
  60. 20 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCSSLAdapter.h
  61. 47 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCSessionDescription.h
  62. 21 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCTracing.h
  63. 33 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoCapturer.h
  64. 16 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoCodecConstants.h
  65. 36 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoCodecInfo.h
  66. 45 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoder.h
  67. 28 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoderFactory.h
  68. 18 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoderFactoryH264.h
  69. 18 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoderH264.h
  70. 25 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoderVP8.h
  71. 25 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoderVP9.h
  72. 49 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoder.h
  73. 28 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderFactory.h
  74. 18 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderFactoryH264.h
  75. 22 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderH264.h
  76. 28 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderQpThresholds.h
  77. 43 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderSettings.h
  78. 25 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderVP8.h
  79. 25 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderVP9.h
  80. 85 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoFrame.h
  81. 30 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoFrameBuffer.h
  82. 40 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoRenderer.h
  83. 37 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoSource.h
  84. 37 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoTrack.h
  85. 41 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoViewShading.h
  86. 45 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCYUVPlanarBuffer.h
  87. 81 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/UIDevice+RTCDevice.h
  88. 92 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/WebRTC.h
  89. BIN
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Info.plist
  90. 966 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/LICENSE.md
  91. 6 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Modules/module.modulemap
  92. BIN
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/WebRTC
  93. 985 0
      wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/LICENSE.md
  94. 413 0
      wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/Headers/WFAVEngineKit.h
  95. BIN
      wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/Info.plist
  96. 985 0
      wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/LICENSE.md
  97. 54 0
      wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/README.md
  98. BIN
      wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/WFAVEngineKit
  99. 54 0
      wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/WebRTC_README.md
  100. 132 0
      wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/_CodeSignature/CodeResources

+ 2106 - 0
wfuikit/WFChatUIKit.xcodeproj/project.pbxproj

@@ -0,0 +1,2106 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 50;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		2F1439F5217F5DAA00B3E38A /* WFCUSearchGroupTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F1439F3217F5DAA00B3E38A /* WFCUSearchGroupTableViewCell.h */; };
+		2F1439F6217F5DAA00B3E38A /* WFCUSearchGroupTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F1439F4217F5DAA00B3E38A /* WFCUSearchGroupTableViewCell.m */; };
+		2F143A6B217F7D4100B3E38A /* Stickers.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2F143A68217F7D4100B3E38A /* Stickers.bundle */; };
+		2F143A6C217F7D4100B3E38A /* Emoj.plist in Resources */ = {isa = PBXBuildFile; fileRef = 2F143A69217F7D4100B3E38A /* Emoj.plist */; };
+		2F143A83217F86EF00B3E38A /* WFChatUIKit.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2F143A82217F86EF00B3E38A /* WFChatUIKit.xcassets */; };
+		2F337EE6219EE1840086B0F3 /* WFCUTextCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F337EE5219EE1840086B0F3 /* WFCUTextCell.h */; };
+		2F36433321C136C400904CAB /* WFCUFavChannelTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F36433121C136C400904CAB /* WFCUFavChannelTableViewController.h */; };
+		2F36433421C136C400904CAB /* WFCUFavChannelTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F36433221C136C400904CAB /* WFCUFavChannelTableViewController.m */; };
+		2F36433721C13C5300904CAB /* WFCUChannelTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F36433521C13C5300904CAB /* WFCUChannelTableViewCell.h */; };
+		2F36433821C13C5300904CAB /* WFCUChannelTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F36433621C13C5300904CAB /* WFCUChannelTableViewCell.m */; };
+		2F3A6C18219EE941009A8B4B /* WFCUFaceBoard.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F3A6C12219EE941009A8B4B /* WFCUFaceBoard.m */; };
+		2F3A6C19219EE941009A8B4B /* WFCUFaceBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F3A6C13219EE941009A8B4B /* WFCUFaceBoard.h */; };
+		2F3A6C1A219EE941009A8B4B /* WFCUFaceButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F3A6C14219EE941009A8B4B /* WFCUFaceButton.m */; };
+		2F3A6C1B219EE941009A8B4B /* WFCUFaceButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F3A6C15219EE941009A8B4B /* WFCUFaceButton.h */; };
+		2F3A6C1C219EE941009A8B4B /* WFCUStickerItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F3A6C16219EE941009A8B4B /* WFCUStickerItem.h */; };
+		2F3A6C1D219EE941009A8B4B /* WFCUStickerItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F3A6C17219EE941009A8B4B /* WFCUStickerItem.m */; };
+		2F44A3A72180B48F00E74EA4 /* WFCUMentionUserTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F44A3A52180B48F00E74EA4 /* WFCUMentionUserTableViewController.h */; };
+		2F44A3A82180B48F00E74EA4 /* WFCUMentionUserTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F44A3A62180B48F00E74EA4 /* WFCUMentionUserTableViewController.m */; };
+		2F49910A2189239E005F6A84 /* WFCUFloatingWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F4991062189239E005F6A84 /* WFCUFloatingWindow.m */; };
+		2F49910B2189239E005F6A84 /* WFCUVideoViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F4991072189239E005F6A84 /* WFCUVideoViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2F49910C2189239E005F6A84 /* WFCUVideoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F4991082189239E005F6A84 /* WFCUVideoViewController.m */; };
+		2F49910D2189239E005F6A84 /* WFCUFloatingWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F4991092189239E005F6A84 /* WFCUFloatingWindow.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2F550BE4217F4D7B00F56C26 /* WFChatUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550BE2217F4D7B00F56C26 /* WFChatUIKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2F550BF3217F4DCD00F56C26 /* WFChatClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F550BEC217F4DCD00F56C26 /* WFChatClient.framework */; };
+		2F551091217F5CC200F56C26 /* WFCUMediaMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EB4217F5CC000F56C26 /* WFCUMediaMessageCell.m */; };
+		2F551092217F5CC200F56C26 /* WFCULocationCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EB5217F5CC000F56C26 /* WFCULocationCell.h */; };
+		2F551093217F5CC200F56C26 /* WFCUFileCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EB6217F5CC000F56C26 /* WFCUFileCell.m */; };
+		2F551094217F5CC200F56C26 /* WFCUCallSummaryCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EB7217F5CC000F56C26 /* WFCUCallSummaryCell.m */; };
+		2F551095217F5CC200F56C26 /* WFCUInformationCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EB8217F5CC000F56C26 /* WFCUInformationCell.m */; };
+		2F551096217F5CC200F56C26 /* WFCUImageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EB9217F5CC000F56C26 /* WFCUImageCell.h */; };
+		2F551097217F5CC200F56C26 /* WFCUVoiceCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EBA217F5CC000F56C26 /* WFCUVoiceCell.m */; };
+		2F551098217F5CC200F56C26 /* WFCUMessageCellBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EBB217F5CC000F56C26 /* WFCUMessageCellBase.h */; };
+		2F551099217F5CC200F56C26 /* WFCUTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EBC217F5CC000F56C26 /* WFCUTextCell.m */; };
+		2F55109A217F5CC200F56C26 /* WFCUVideoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EBD217F5CC000F56C26 /* WFCUVideoCell.m */; };
+		2F55109B217F5CC200F56C26 /* WFCUMessageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EBE217F5CC000F56C26 /* WFCUMessageCell.h */; };
+		2F55109C217F5CC200F56C26 /* WFCUStickerCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EBF217F5CC000F56C26 /* WFCUStickerCell.h */; };
+		2F55109D217F5CC200F56C26 /* WFCUMediaMessageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EC0217F5CC000F56C26 /* WFCUMediaMessageCell.h */; };
+		2F55109E217F5CC200F56C26 /* WFCUFileCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EC1217F5CC000F56C26 /* WFCUFileCell.h */; };
+		2F55109F217F5CC200F56C26 /* WFCULocationCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EC2217F5CC000F56C26 /* WFCULocationCell.m */; };
+		2F5510A1217F5CC200F56C26 /* WFCUMessageCellBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EC4217F5CC000F56C26 /* WFCUMessageCellBase.m */; };
+		2F5510A2217F5CC200F56C26 /* WFCUVoiceCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EC5217F5CC000F56C26 /* WFCUVoiceCell.h */; };
+		2F5510A3217F5CC200F56C26 /* WFCUImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EC6217F5CC000F56C26 /* WFCUImageCell.m */; };
+		2F5510A4217F5CC200F56C26 /* WFCUInformationCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EC7217F5CC000F56C26 /* WFCUInformationCell.h */; };
+		2F5510A5217F5CC200F56C26 /* WFCUCallSummaryCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EC8217F5CC000F56C26 /* WFCUCallSummaryCell.h */; };
+		2F5510A6217F5CC200F56C26 /* WFCUStickerCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EC9217F5CC000F56C26 /* WFCUStickerCell.m */; };
+		2F5510A7217F5CC200F56C26 /* WFCUMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550ECA217F5CC000F56C26 /* WFCUMessageCell.m */; };
+		2F5510A8217F5CC200F56C26 /* WFCUVideoCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550ECB217F5CC000F56C26 /* WFCUVideoCell.h */; };
+		2F5510A9217F5CC200F56C26 /* WFCUMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550ECD217F5CC000F56C26 /* WFCUMessageModel.m */; };
+		2F5510AA217F5CC200F56C26 /* WFCUMessageModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550ECE217F5CC000F56C26 /* WFCUMessageModel.h */; };
+		2F5510AB217F5CC200F56C26 /* WFCUMessageListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550ED0217F5CC000F56C26 /* WFCUMessageListViewController.m */; };
+		2F5510AC217F5CC200F56C26 /* WFCUMessageListViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550ED1217F5CC000F56C26 /* WFCUMessageListViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2F5510AD217F5CC200F56C26 /* WFCUProfileTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550ED3217F5CC000F56C26 /* WFCUProfileTableViewController.h */; };
+		2F5510AE217F5CC200F56C26 /* WFCUGroupMemberTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550ED4217F5CC000F56C26 /* WFCUGroupMemberTableViewCell.m */; };
+		2F5510AF217F5CC200F56C26 /* WFCUInviteGroupMemberViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550ED5217F5CC000F56C26 /* WFCUInviteGroupMemberViewController.h */; };
+		2F5510B0217F5CC200F56C26 /* WFCUGroupMemberTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550ED6217F5CC000F56C26 /* WFCUGroupMemberTableViewController.h */; };
+		2F5510B1217F5CC200F56C26 /* WFCUGroupTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550ED7217F5CC000F56C26 /* WFCUGroupTableViewCell.m */; };
+		2F5510B2217F5CC200F56C26 /* WFCUImagePreviewViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550ED8217F5CC000F56C26 /* WFCUImagePreviewViewController.h */; };
+		2F5510B3217F5CC200F56C26 /* WFCUSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550ED9217F5CC000F56C26 /* WFCUSearchViewController.m */; };
+		2F5510B4217F5CC200F56C26 /* WFCUGeneralModifyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EDA217F5CC000F56C26 /* WFCUGeneralModifyViewController.m */; };
+		2F5510B5217F5CC200F56C26 /* WFCUBrowserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EDB217F5CC000F56C26 /* WFCUBrowserViewController.m */; };
+		2F5510B6217F5CC200F56C26 /* WFCUProfileTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EDC217F5CC000F56C26 /* WFCUProfileTableViewController.m */; };
+		2F5510B7217F5CC200F56C26 /* WFCUGroupMemberTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EDD217F5CC000F56C26 /* WFCUGroupMemberTableViewCell.h */; };
+		2F5510B8217F5CC200F56C26 /* WFCUImagePreviewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EDE217F5CC000F56C26 /* WFCUImagePreviewViewController.m */; };
+		2F5510B9217F5CC200F56C26 /* WFCUGroupTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EDF217F5CC000F56C26 /* WFCUGroupTableViewCell.h */; };
+		2F5510BA217F5CC200F56C26 /* WFCUGroupMemberTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EE0217F5CC000F56C26 /* WFCUGroupMemberTableViewController.m */; };
+		2F5510BB217F5CC200F56C26 /* WFCUInviteGroupMemberViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EE1217F5CC000F56C26 /* WFCUInviteGroupMemberViewController.m */; };
+		2F5510BC217F5CC200F56C26 /* WFCUBrowserViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EE2217F5CC000F56C26 /* WFCUBrowserViewController.h */; };
+		2F5510BD217F5CC200F56C26 /* WFCUGeneralModifyViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EE3217F5CC000F56C26 /* WFCUGeneralModifyViewController.h */; };
+		2F5510BE217F5CC200F56C26 /* WFCUSearchViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EE4217F5CC000F56C26 /* WFCUSearchViewController.h */; };
+		2F5510BF217F5CC200F56C26 /* WFCUCreateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EE7217F5CC000F56C26 /* WFCUCreateGroupViewController.m */; };
+		2F5510C0217F5CC200F56C26 /* WFCUCreateGroupViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EE8217F5CC000F56C26 /* WFCUCreateGroupViewController.h */; };
+		2F5510C5217F5CC200F56C26 /* WFCUFavGroupTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EF0217F5CC000F56C26 /* WFCUFavGroupTableViewController.h */; };
+		2F5510C6217F5CC200F56C26 /* WFCUFavGroupTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EF1217F5CC000F56C26 /* WFCUFavGroupTableViewController.m */; };
+		2F5510C7217F5CC200F56C26 /* WFCULocationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EF4217F5CC000F56C26 /* WFCULocationViewController.m */; };
+		2F5510C8217F5CC200F56C26 /* WFCUPluginItemView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EF5217F5CC000F56C26 /* WFCUPluginItemView.h */; };
+		2F5510C9217F5CC200F56C26 /* WFCUSelectFileViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550EF6217F5CC000F56C26 /* WFCUSelectFileViewController.m */; };
+		2F5510CA217F5CC200F56C26 /* WFCUPluginBoardView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EF7217F5CC000F56C26 /* WFCUPluginBoardView.h */; };
+		2F5510CB217F5CC200F56C26 /* WFCUChatInputBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EF8217F5CC000F56C26 /* WFCUChatInputBar.h */; };
+		2F5510CC217F5CC200F56C26 /* WFCUVoiceRecordView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EF9217F5CC000F56C26 /* WFCUVoiceRecordView.h */; };
+		2F5510CD217F5CC200F56C26 /* WFCUSelectedFileCollectionViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550EFA217F5CC000F56C26 /* WFCUSelectedFileCollectionViewCell.h */; };
+		2F5510E3217F5CC200F56C26 /* WFCUEmotionTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F14217F5CC100F56C26 /* WFCUEmotionTextAttachment.m */; };
+		2F5510E4217F5CC200F56C26 /* WFCULocationPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F15217F5CC100F56C26 /* WFCULocationPoint.h */; };
+		2F5510E5217F5CC200F56C26 /* WFCUPluginItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F16217F5CC100F56C26 /* WFCUPluginItemView.m */; };
+		2F5510E6217F5CC200F56C26 /* WFCULocationViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F17217F5CC100F56C26 /* WFCULocationViewController.h */; };
+		2F5510E7217F5CC200F56C26 /* WFCUChatInputBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F18217F5CC100F56C26 /* WFCUChatInputBar.m */; };
+		2F5510E8217F5CC200F56C26 /* WFCUPluginBoardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F19217F5CC100F56C26 /* WFCUPluginBoardView.m */; };
+		2F5510E9217F5CC200F56C26 /* WFCUSelectFileViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F1A217F5CC100F56C26 /* WFCUSelectFileViewController.h */; };
+		2F5510EA217F5CC200F56C26 /* WFCUEmotionTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F1B217F5CC100F56C26 /* WFCUEmotionTextAttachment.h */; };
+		2F5510EB217F5CC200F56C26 /* WFCUSelectedFileCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F1C217F5CC100F56C26 /* WFCUSelectedFileCollectionViewCell.m */; };
+		2F5510EC217F5CC200F56C26 /* WFCUVoiceRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F1D217F5CC100F56C26 /* WFCUVoiceRecordView.m */; };
+		2F5510ED217F5CC200F56C26 /* WFCULocationPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F1E217F5CC100F56C26 /* WFCULocationPoint.m */; };
+		2F5510EE217F5CC200F56C26 /* CCHMapTreeUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F20217F5CC100F56C26 /* CCHMapTreeUtils.m */; };
+		2F5510EF217F5CC200F56C26 /* CCHMapClusterControllerDebugPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F21217F5CC100F56C26 /* CCHMapClusterControllerDebugPolygon.h */; };
+		2F5510F0217F5CC200F56C26 /* CCHMapTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F22217F5CC100F56C26 /* CCHMapTree.m */; };
+		2F5510F1217F5CC200F56C26 /* CCHMapClusterController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F23217F5CC100F56C26 /* CCHMapClusterController.m */; };
+		2F5510F2217F5CC200F56C26 /* CCHMapClusterControllerUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F24217F5CC100F56C26 /* CCHMapClusterControllerUtils.m */; };
+		2F5510F3217F5CC200F56C26 /* CCHMapClusterOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F25217F5CC100F56C26 /* CCHMapClusterOperation.m */; };
+		2F5510F4217F5CC200F56C26 /* CCHCenterOfMassMapClusterer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F26217F5CC100F56C26 /* CCHCenterOfMassMapClusterer.h */; };
+		2F5510F5217F5CC200F56C26 /* CCHMapViewDelegateProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F27217F5CC100F56C26 /* CCHMapViewDelegateProxy.h */; };
+		2F5510F6217F5CC200F56C26 /* CCHMapAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F28217F5CC100F56C26 /* CCHMapAnimator.h */; };
+		2F5510F7217F5CC200F56C26 /* CCHMapClusterAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F29217F5CC100F56C26 /* CCHMapClusterAnnotation.m */; };
+		2F5510F8217F5CC200F56C26 /* CCHFadeInOutMapAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F2A217F5CC100F56C26 /* CCHFadeInOutMapAnimator.h */; };
+		2F5510F9217F5CC200F56C26 /* CCHNearCenterMapClusterer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F2B217F5CC100F56C26 /* CCHNearCenterMapClusterer.h */; };
+		2F5510FA217F5CC200F56C26 /* CCHMapClusterControllerDebugPolygon.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F2C217F5CC100F56C26 /* CCHMapClusterControllerDebugPolygon.m */; };
+		2F5510FB217F5CC200F56C26 /* CCHMapClusterControllerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F2D217F5CC100F56C26 /* CCHMapClusterControllerDelegate.h */; };
+		2F5510FC217F5CC200F56C26 /* CCHMapTreeUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F2E217F5CC100F56C26 /* CCHMapTreeUtils.h */; };
+		2F5510FD217F5CC200F56C26 /* CCHMapClusterController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F2F217F5CC100F56C26 /* CCHMapClusterController.h */; };
+		2F5510FE217F5CC200F56C26 /* CCHMapClusterer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F30217F5CC100F56C26 /* CCHMapClusterer.h */; };
+		2F5510FF217F5CC200F56C26 /* CCHMapTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F31217F5CC100F56C26 /* CCHMapTree.h */; };
+		2F551100217F5CC200F56C26 /* CCHMapClusterControllerUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F32217F5CC100F56C26 /* CCHMapClusterControllerUtils.h */; };
+		2F551101217F5CC200F56C26 /* CCHMapClusterOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F33217F5CC100F56C26 /* CCHMapClusterOperation.h */; };
+		2F551102217F5CC200F56C26 /* CCHNearCenterMapClusterer.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F34217F5CC100F56C26 /* CCHNearCenterMapClusterer.m */; };
+		2F551103217F5CC200F56C26 /* CCHFadeInOutMapAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F35217F5CC100F56C26 /* CCHFadeInOutMapAnimator.m */; };
+		2F551104217F5CC200F56C26 /* CCHMapClusterAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F36217F5CC100F56C26 /* CCHMapClusterAnnotation.h */; };
+		2F551105217F5CC200F56C26 /* CCHMapViewDelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F37217F5CC100F56C26 /* CCHMapViewDelegateProxy.m */; };
+		2F551106217F5CC200F56C26 /* CCHCenterOfMassMapClusterer.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F38217F5CC100F56C26 /* CCHCenterOfMassMapClusterer.m */; };
+		2F551109217F5CC200F56C26 /* pinyin.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F3D217F5CC100F56C26 /* pinyin.h */; };
+		2F55110A217F5CC200F56C26 /* pinyin.c in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F3E217F5CC100F56C26 /* pinyin.c */; };
+		2F55110B217F5CC200F56C26 /* VideoPlayerSampleViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F40217F5CC100F56C26 /* VideoPlayerSampleViewController.h */; };
+		2F55110C217F5CC200F56C26 /* FullScreenView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F41217F5CC100F56C26 /* FullScreenView.h */; };
+		2F55110D217F5CC200F56C26 /* AirplayActiveView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F42217F5CC100F56C26 /* AirplayActiveView.m */; };
+		2F55110E217F5CC200F56C26 /* VideoPlayerSampleView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F43217F5CC100F56C26 /* VideoPlayerSampleView.h */; };
+		2F55110F217F5CC200F56C26 /* FullScreenViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F44217F5CC100F56C26 /* FullScreenViewController.h */; };
+		2F551110217F5CC200F56C26 /* VideoPlayerKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F45217F5CC100F56C26 /* VideoPlayerKit.h */; };
+		2F551111217F5CC200F56C26 /* VideoPlayerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F46217F5CC100F56C26 /* VideoPlayerView.h */; };
+		2F551112217F5CC200F56C26 /* VideoPlayerSampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F47217F5CC100F56C26 /* VideoPlayerSampleViewController.m */; };
+		2F551113217F5CC200F56C26 /* VideoPlayerSampleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F48217F5CC100F56C26 /* VideoPlayerSampleView.m */; };
+		2F551114217F5CC200F56C26 /* AirplayActiveView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F49217F5CC100F56C26 /* AirplayActiveView.h */; };
+		2F551115217F5CC200F56C26 /* FullScreenView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F4A217F5CC100F56C26 /* FullScreenView.m */; };
+		2F551124217F5CC200F56C26 /* FullScreenViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F5A217F5CC100F56C26 /* FullScreenViewController.m */; };
+		2F551125217F5CC200F56C26 /* VideoPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F5B217F5CC100F56C26 /* VideoPlayer.h */; };
+		2F551126217F5CC200F56C26 /* VideoPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F5C217F5CC100F56C26 /* VideoPlayerView.m */; };
+		2F551127217F5CC200F56C26 /* VideoPlayerKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F5D217F5CC100F56C26 /* VideoPlayerKit.m */; };
+		2F551150217F5CC200F56C26 /* KZVideoListViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F8E217F5CC100F56C26 /* KZVideoListViewController.h */; };
+		2F551151217F5CC200F56C26 /* KZVideoConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F8F217F5CC100F56C26 /* KZVideoConfig.m */; };
+		2F551152217F5CC200F56C26 /* KZVideoSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F90217F5CC100F56C26 /* KZVideoSupport.h */; };
+		2F551153217F5CC200F56C26 /* KZVideoPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F91217F5CC100F56C26 /* KZVideoPlayer.m */; };
+		2F551154217F5CC200F56C26 /* KZVideoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F92217F5CC100F56C26 /* KZVideoViewController.m */; };
+		2F551155217F5CC200F56C26 /* KZVideoConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F93217F5CC100F56C26 /* KZVideoConfig.h */; };
+		2F551156217F5CC200F56C26 /* KZVideoListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F94217F5CC100F56C26 /* KZVideoListViewController.m */; };
+		2F551157217F5CC200F56C26 /* KZVideoSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F95217F5CC100F56C26 /* KZVideoSupport.m */; };
+		2F551158217F5CC200F56C26 /* KZVideoPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F96217F5CC100F56C26 /* KZVideoPlayer.h */; };
+		2F551159217F5CC200F56C26 /* KZVideoViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F97217F5CC100F56C26 /* KZVideoViewController.h */; };
+		2F55115A217F5CC200F56C26 /* SDPhotoBrowserConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F99217F5CC100F56C26 /* SDPhotoBrowserConfig.h */; };
+		2F55115B217F5CC200F56C26 /* SDPhotoBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F9A217F5CC100F56C26 /* SDPhotoBrowser.m */; };
+		2F55115C217F5CC200F56C26 /* SDWaitingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F9B217F5CC100F56C26 /* SDWaitingView.m */; };
+		2F55115D217F5CC200F56C26 /* SDBrowserImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550F9C217F5CC100F56C26 /* SDBrowserImageView.m */; };
+		2F55115E217F5CC200F56C26 /* SDWaitingView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F9D217F5CC100F56C26 /* SDWaitingView.h */; };
+		2F55115F217F5CC200F56C26 /* SDPhotoBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F9E217F5CC100F56C26 /* SDPhotoBrowser.h */; };
+		2F551160217F5CC200F56C26 /* SDBrowserImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550F9F217F5CC100F56C26 /* SDBrowserImageView.h */; };
+		2F551161217F5CC200F56C26 /* KxMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FA1217F5CC100F56C26 /* KxMenu.m */; };
+		2F551162217F5CC200F56C26 /* KxMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FA2217F5CC100F56C26 /* KxMenu.h */; };
+		2F551163217F5CC200F56C26 /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FA4217F5CC100F56C26 /* AFSecurityPolicy.h */; };
+		2F551164217F5CC200F56C26 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FA5217F5CC100F56C26 /* AFNetworkReachabilityManager.h */; };
+		2F551165217F5CC200F56C26 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FA6217F5CC100F56C26 /* AFURLSessionManager.h */; };
+		2F551166217F5CC200F56C26 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FA7217F5CC100F56C26 /* AFURLRequestSerialization.h */; };
+		2F551167217F5CC200F56C26 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FA8217F5CC100F56C26 /* AFURLResponseSerialization.m */; };
+		2F551168217F5CC200F56C26 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FA9217F5CC100F56C26 /* AFHTTPSessionManager.m */; };
+		2F551169217F5CC200F56C26 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FAA217F5CC100F56C26 /* AFURLResponseSerialization.h */; };
+		2F55116A217F5CC200F56C26 /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FAB217F5CC100F56C26 /* AFURLSessionManager.m */; };
+		2F55116B217F5CC200F56C26 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FAC217F5CC100F56C26 /* AFURLRequestSerialization.m */; };
+		2F55116C217F5CC200F56C26 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FAD217F5CC100F56C26 /* AFNetworking.h */; };
+		2F55116D217F5CC200F56C26 /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FAE217F5CC100F56C26 /* AFNetworkReachabilityManager.m */; };
+		2F55116E217F5CC200F56C26 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FAF217F5CC100F56C26 /* AFSecurityPolicy.m */; };
+		2F55116F217F5CC200F56C26 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FB0217F5CC100F56C26 /* AFHTTPSessionManager.h */; };
+		2F55118D217F5CC200F56C26 /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FD6217F5CC100F56C26 /* MBProgressHUD.m */; };
+		2F55118E217F5CC200F56C26 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FD7217F5CC100F56C26 /* MBProgressHUD.h */; };
+		2F55118F217F5CC200F56C26 /* UIView+SDExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FD9217F5CC100F56C26 /* UIView+SDExtension.h */; };
+		2F551190217F5CC200F56C26 /* SDRefreshFooterView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FDA217F5CC100F56C26 /* SDRefreshFooterView.h */; };
+		2F551191217F5CC200F56C26 /* SDRefreshView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FDB217F5CC100F56C26 /* SDRefreshView.h */; };
+		2F551192217F5CC200F56C26 /* SDRefreshHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FDC217F5CC100F56C26 /* SDRefreshHeaderView.m */; };
+		2F551194217F5CC200F56C26 /* UIView+SDExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FDE217F5CC100F56C26 /* UIView+SDExtension.m */; };
+		2F551195217F5CC200F56C26 /* SDRefreshFooterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FDF217F5CC100F56C26 /* SDRefreshFooterView.m */; };
+		2F551196217F5CC200F56C26 /* SDRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FE0217F5CC100F56C26 /* SDRefresh.h */; };
+		2F551197217F5CC200F56C26 /* SDRefreshHeaderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FE1217F5CC100F56C26 /* SDRefreshHeaderView.h */; };
+		2F551198217F5CC200F56C26 /* SDRefreshView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FE2217F5CC100F56C26 /* SDRefreshView.m */; };
+		2F551199217F5CC200F56C26 /* UITextView+Placeholder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FE4217F5CC100F56C26 /* UITextView+Placeholder.m */; };
+		2F55119A217F5CC200F56C26 /* UITextView+Placeholder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FE5217F5CC100F56C26 /* UITextView+Placeholder.h */; };
+		2F5511A0217F5CC200F56C26 /* UIImage+WebP.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FED217F5CC100F56C26 /* UIImage+WebP.m */; };
+		2F5511A1217F5CC200F56C26 /* MKAnnotationView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FEE217F5CC100F56C26 /* MKAnnotationView+WebCache.m */; };
+		2F5511A2217F5CC200F56C26 /* NSImage+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FEF217F5CC100F56C26 /* NSImage+WebCache.h */; };
+		2F5511A3217F5CC200F56C26 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FF0217F5CC100F56C26 /* UIImageView+WebCache.h */; };
+		2F5511A4217F5CC300F56C26 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FF1217F5CC100F56C26 /* NSData+ImageContentType.h */; };
+		2F5511A5217F5CC300F56C26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FF2217F5CC100F56C26 /* SDWebImageManager.m */; };
+		2F5511A6217F5CC300F56C26 /* SDWebImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FF3217F5CC100F56C26 /* SDWebImageDecoder.m */; };
+		2F5511A7217F5CC300F56C26 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FF4217F5CC100F56C26 /* SDWebImageDownloaderOperation.h */; };
+		2F5511A8217F5CC300F56C26 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FF5217F5CC100F56C26 /* UIImageView+HighlightedWebCache.m */; };
+		2F5511A9217F5CC300F56C26 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FF6217F5CC100F56C26 /* SDImageCache.h */; };
+		2F5511AA217F5CC300F56C26 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FF7217F5CC100F56C26 /* SDImageCacheConfig.h */; };
+		2F5511AB217F5CC300F56C26 /* FLAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FF9217F5CC100F56C26 /* FLAnimatedImageView+WebCache.m */; };
+		2F5511AC217F5CC300F56C26 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FFB217F5CC100F56C26 /* FLAnimatedImage.m */; };
+		2F5511AD217F5CC300F56C26 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F550FFC217F5CC100F56C26 /* FLAnimatedImageView.m */; };
+		2F5511AE217F5CC300F56C26 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FFD217F5CC100F56C26 /* FLAnimatedImage.h */; };
+		2F5511AF217F5CC300F56C26 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FFE217F5CC100F56C26 /* FLAnimatedImageView.h */; };
+		2F5511B0217F5CC300F56C26 /* FLAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F550FFF217F5CC100F56C26 /* FLAnimatedImageView+WebCache.h */; };
+		2F5511B1217F5CC300F56C26 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551000217F5CC100F56C26 /* SDWebImageDownloader.m */; };
+		2F5511B2217F5CC300F56C26 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551001217F5CC100F56C26 /* UIImage+GIF.m */; };
+		2F5511B3217F5CC300F56C26 /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551002217F5CC100F56C26 /* UIButton+WebCache.h */; };
+		2F5511B4217F5CC300F56C26 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551003217F5CC100F56C26 /* UIImage+MultiFormat.m */; };
+		2F5511B5217F5CC300F56C26 /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551004217F5CC100F56C26 /* SDWebImageCompat.m */; };
+		2F5511B6217F5CC300F56C26 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551005217F5CC100F56C26 /* SDWebImagePrefetcher.m */; };
+		2F5511B7217F5CC300F56C26 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551006217F5CC100F56C26 /* SDWebImage.h */; };
+		2F5511B8217F5CC300F56C26 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551007217F5CC100F56C26 /* UIView+WebCache.h */; };
+		2F5511B9217F5CC300F56C26 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551008217F5CC100F56C26 /* UIView+WebCacheOperation.h */; };
+		2F5511BA217F5CC300F56C26 /* MKAnnotationView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551009217F5CC100F56C26 /* MKAnnotationView+WebCache.h */; };
+		2F5511BB217F5CC300F56C26 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55100A217F5CC100F56C26 /* UIImage+WebP.h */; };
+		2F5511BC217F5CC300F56C26 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55100B217F5CC100F56C26 /* SDImageCache.m */; };
+		2F5511BD217F5CC300F56C26 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55100C217F5CC100F56C26 /* UIImageView+HighlightedWebCache.h */; };
+		2F5511BE217F5CC300F56C26 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55100D217F5CC100F56C26 /* SDWebImageDownloaderOperation.m */; };
+		2F5511BF217F5CC300F56C26 /* SDWebImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55100E217F5CC100F56C26 /* SDWebImageDecoder.h */; };
+		2F5511C0217F5CC300F56C26 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55100F217F5CC100F56C26 /* SDWebImageManager.h */; };
+		2F5511C1217F5CC300F56C26 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551010217F5CC100F56C26 /* NSData+ImageContentType.m */; };
+		2F5511C2217F5CC300F56C26 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551011217F5CC100F56C26 /* UIImageView+WebCache.m */; };
+		2F5511C3217F5CC300F56C26 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551012217F5CC100F56C26 /* SDWebImageOperation.h */; };
+		2F5511C4217F5CC300F56C26 /* NSImage+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551013217F5CC100F56C26 /* NSImage+WebCache.m */; };
+		2F5511C5217F5CC300F56C26 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551014217F5CC100F56C26 /* SDWebImageDownloader.h */; };
+		2F5511C6217F5CC300F56C26 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551015217F5CC100F56C26 /* SDImageCacheConfig.m */; };
+		2F5511C7217F5CC300F56C26 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551016217F5CC100F56C26 /* UIView+WebCacheOperation.m */; };
+		2F5511C8217F5CC300F56C26 /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551017217F5CC100F56C26 /* UIView+WebCache.m */; };
+		2F5511C9217F5CC300F56C26 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551018217F5CC100F56C26 /* SDWebImagePrefetcher.h */; };
+		2F5511CA217F5CC300F56C26 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551019217F5CC100F56C26 /* SDWebImageCompat.h */; };
+		2F5511CB217F5CC300F56C26 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55101A217F5CC100F56C26 /* UIImage+MultiFormat.h */; };
+		2F5511CC217F5CC300F56C26 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55101B217F5CC100F56C26 /* UIButton+WebCache.m */; };
+		2F5511CD217F5CC300F56C26 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55101C217F5CC100F56C26 /* UIImage+GIF.h */; };
+		2F5511CE217F5CC300F56C26 /* TYAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55101E217F5CC100F56C26 /* TYAlertView.m */; };
+		2F5511CF217F5CC300F56C26 /* TYAlertDropDownAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55101F217F5CC100F56C26 /* TYAlertDropDownAnimation.h */; };
+		2F5511D0217F5CC300F56C26 /* UIView+TYAutoLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551020217F5CC100F56C26 /* UIView+TYAutoLayout.h */; };
+		2F5511D1217F5CC300F56C26 /* TYShowAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551021217F5CC100F56C26 /* TYShowAlertView.h */; };
+		2F5511D2217F5CC300F56C26 /* UIView+TYAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551022217F5CC100F56C26 /* UIView+TYAlertView.m */; };
+		2F5511D3217F5CC300F56C26 /* TYAlertScaleFadeAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551023217F5CC100F56C26 /* TYAlertScaleFadeAnimation.m */; };
+		2F5511D4217F5CC300F56C26 /* TYBaseAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551024217F5CC100F56C26 /* TYBaseAnimation.h */; };
+		2F5511D5217F5CC300F56C26 /* TYAlertFadeAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551025217F5CC100F56C26 /* TYAlertFadeAnimation.m */; };
+		2F5511D6217F5CC300F56C26 /* TYAlertController+TransitionAnimate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551026217F5CC100F56C26 /* TYAlertController+TransitionAnimate.m */; };
+		2F5511D7217F5CC300F56C26 /* TYAlertController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551027217F5CC100F56C26 /* TYAlertController.h */; };
+		2F5511D8217F5CC300F56C26 /* UIView+TYAutoLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551028217F5CC100F56C26 /* UIView+TYAutoLayout.m */; };
+		2F5511D9217F5CC300F56C26 /* TYAlertDropDownAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551029217F5CC100F56C26 /* TYAlertDropDownAnimation.m */; };
+		2F5511DA217F5CC300F56C26 /* TYAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55102A217F5CC100F56C26 /* TYAlertView.h */; };
+		2F5511DB217F5CC300F56C26 /* UIView+TYAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55102B217F5CC100F56C26 /* UIView+TYAlertView.h */; };
+		2F5511DC217F5CC300F56C26 /* TYShowAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55102C217F5CC100F56C26 /* TYShowAlertView.m */; };
+		2F5511DD217F5CC300F56C26 /* TYBaseAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55102D217F5CC100F56C26 /* TYBaseAnimation.m */; };
+		2F5511DE217F5CC300F56C26 /* TYAlertScaleFadeAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55102E217F5CC100F56C26 /* TYAlertScaleFadeAnimation.h */; };
+		2F5511DF217F5CC300F56C26 /* TYAlertController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55102F217F5CC100F56C26 /* TYAlertController.m */; };
+		2F5511E0217F5CC300F56C26 /* TYAlertFadeAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551030217F5CC100F56C26 /* TYAlertFadeAnimation.h */; };
+		2F5511E1217F5CC300F56C26 /* YLGIFImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551032217F5CC100F56C26 /* YLGIFImage.m */; };
+		2F5511E2217F5CC300F56C26 /* YLImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551033217F5CC100F56C26 /* YLImageView.m */; };
+		2F5511E3217F5CC300F56C26 /* YLGIFImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551034217F5CC100F56C26 /* YLGIFImage.h */; };
+		2F5511E4217F5CC300F56C26 /* YLImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551035217F5CC100F56C26 /* YLImageView.h */; };
+		2F5511E5217F5CC300F56C26 /* Predefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551036217F5CC100F56C26 /* Predefine.h */; };
+		2F5511E6217F5CC300F56C26 /* WFCUForwardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551038217F5CC100F56C26 /* WFCUForwardViewController.m */; };
+		2F5511E7217F5CC300F56C26 /* WFCUForwardMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551039217F5CC100F56C26 /* WFCUForwardMessageCell.m */; };
+		2F5511E8217F5CC300F56C26 /* WFCUShareMessageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55103A217F5CC100F56C26 /* WFCUShareMessageView.m */; };
+		2F5511E9217F5CC300F56C26 /* WFCUForwardViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55103B217F5CC100F56C26 /* WFCUForwardViewController.h */; };
+		2F5511EA217F5CC300F56C26 /* WFCUShareMessageView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2F55103C217F5CC100F56C26 /* WFCUShareMessageView.xib */; };
+		2F5511EB217F5CC300F56C26 /* WFCUShareMessageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55103D217F5CC100F56C26 /* WFCUShareMessageView.h */; };
+		2F5511EC217F5CC300F56C26 /* WFCUForwardMessageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55103E217F5CC100F56C26 /* WFCUForwardMessageCell.h */; };
+		2F5511ED217F5CC300F56C26 /* TabbarButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551040217F5CC100F56C26 /* TabbarButton.h */; };
+		2F5511EE217F5CC300F56C26 /* UIImage+ERCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551041217F5CC100F56C26 /* UIImage+ERCategory.h */; };
+		2F5511EF217F5CC300F56C26 /* AttributedLabel.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551042217F5CC100F56C26 /* AttributedLabel.h */; };
+		2F5511F0217F5CC300F56C26 /* BubbleTipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551043217F5CC100F56C26 /* BubbleTipView.m */; };
+		2F5511F1217F5CC300F56C26 /* UIView+Toast.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551044217F5CC100F56C26 /* UIView+Toast.h */; };
+		2F5511F2217F5CC300F56C26 /* UIView+Screenshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551045217F5CC100F56C26 /* UIView+Screenshot.h */; };
+		2F5511F3217F5CC300F56C26 /* UITabBar+badge.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551046217F5CC100F56C26 /* UITabBar+badge.h */; };
+		2F5511F4217F5CC300F56C26 /* AttributedLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551047217F5CC100F56C26 /* AttributedLabel.m */; };
+		2F5511F5217F5CC300F56C26 /* UIImage+ERCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551048217F5CC100F56C26 /* UIImage+ERCategory.m */; };
+		2F5511F6217F5CC300F56C26 /* TabbarButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551049217F5CC100F56C26 /* TabbarButton.m */; };
+		2F5511F7217F5CC300F56C26 /* BubbleTipView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55104A217F5CC100F56C26 /* BubbleTipView.h */; };
+		2F5511F8217F5CC300F56C26 /* UITabBar+badge.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55104B217F5CC100F56C26 /* UITabBar+badge.m */; };
+		2F5511F9217F5CC300F56C26 /* UIView+Screenshot.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55104C217F5CC100F56C26 /* UIView+Screenshot.m */; };
+		2F5511FA217F5CC300F56C26 /* UIView+Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55104D217F5CC100F56C26 /* UIView+Toast.m */; };
+		2F5511FB217F5CC300F56C26 /* WFCUSwitchTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551050217F5CC100F56C26 /* WFCUSwitchTableViewCell.m */; };
+		2F5511FC217F5CC300F56C26 /* WFCUConversationSettingMemberCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551051217F5CC100F56C26 /* WFCUConversationSettingMemberCell.h */; };
+		2F5511FD217F5CC300F56C26 /* WFCUSwitchTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551052217F5CC100F56C26 /* WFCUSwitchTableViewCell.h */; };
+		2F5511FE217F5CC300F56C26 /* WFCUConversationSettingMemberCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551053217F5CC100F56C26 /* WFCUConversationSettingMemberCell.m */; };
+		2F5511FF217F5CC300F56C26 /* WFCUConversationSettingMemberCollectionViewLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551055217F5CC100F56C26 /* WFCUConversationSettingMemberCollectionViewLayout.m */; };
+		2F551200217F5CC300F56C26 /* WFCUConversationSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551056217F5CC100F56C26 /* WFCUConversationSettingViewController.m */; };
+		2F551201217F5CC300F56C26 /* WFCUConversationSettingViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551057217F5CC100F56C26 /* WFCUConversationSettingViewController.h */; };
+		2F551202217F5CC300F56C26 /* WFCUConversationSettingMemberCollectionViewLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551058217F5CC100F56C26 /* WFCUConversationSettingMemberCollectionViewLayout.h */; };
+		2F551203217F5CC300F56C26 /* WFCUConversationTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55105B217F5CC100F56C26 /* WFCUConversationTableViewCell.h */; };
+		2F551205217F5CC300F56C26 /* WFCUConversationTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55105D217F5CC100F56C26 /* WFCUConversationTableViewCell.m */; };
+		2F551209217F5CC300F56C26 /* WFCUConversationTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551063217F5CC100F56C26 /* WFCUConversationTableViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2F55120A217F5CC300F56C26 /* WFCUConversationTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551064217F5CC100F56C26 /* WFCUConversationTableViewController.m */; };
+		2F55120B217F5CC300F56C26 /* WFCUNewFriendTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551067217F5CC100F56C26 /* WFCUNewFriendTableViewCell.m */; };
+		2F55120C217F5CC300F56C26 /* WFCUContactTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551068217F5CC100F56C26 /* WFCUContactTableViewCell.m */; };
+		2F55120D217F5CC300F56C26 /* WFCUContactSelectTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551069217F5CC100F56C26 /* WFCUContactSelectTableViewCell.m */; };
+		2F55120E217F5CC300F56C26 /* WFCUNewFriendTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55106A217F5CC100F56C26 /* WFCUNewFriendTableViewCell.h */; };
+		2F55120F217F5CC300F56C26 /* WFCUContactTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55106B217F5CC100F56C26 /* WFCUContactTableViewCell.h */; };
+		2F551210217F5CC300F56C26 /* WFCUContactSelectTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55106C217F5CC100F56C26 /* WFCUContactSelectTableViewCell.h */; };
+		2F551211217F5CC300F56C26 /* WFCUContactListViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55106E217F5CC100F56C26 /* WFCUContactListViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2F551212217F5CC300F56C26 /* WFCUContactListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55106F217F5CC100F56C26 /* WFCUContactListViewController.m */; };
+		2F551213217F5CC300F56C26 /* WFCUAddFriendViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551072217F5CC100F56C26 /* WFCUAddFriendViewController.m */; };
+		2F551214217F5CC300F56C26 /* WFCUAddFriendViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551073217F5CC100F56C26 /* WFCUAddFriendViewController.h */; };
+		2F551216217F5CC300F56C26 /* WFCUMyProfileTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551076217F5CC100F56C26 /* WFCUMyProfileTableViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2F55121A217F5CC300F56C26 /* WFCUMyPortraitViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55107A217F5CC100F56C26 /* WFCUMyPortraitViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2F55121B217F5CC300F56C26 /* WFCUMessageNotificationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55107B217F5CC100F56C26 /* WFCUMessageNotificationViewController.m */; };
+		2F55121C217F5CC300F56C26 /* WFCUModifyMyProfileViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55107C217F5CC100F56C26 /* WFCUModifyMyProfileViewController.m */; };
+		2F551220217F5CC300F56C26 /* WFCUMyProfileTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551080217F5CC100F56C26 /* WFCUMyProfileTableViewController.m */; };
+		2F551222217F5CC300F56C26 /* WFCUModifyMyProfileViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551082217F5CC100F56C26 /* WFCUModifyMyProfileViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2F551223217F5CC300F56C26 /* WFCUMessageNotificationViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551083217F5CC100F56C26 /* WFCUMessageNotificationViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2F551224217F5CC300F56C26 /* WFCUMyPortraitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551084217F5CC100F56C26 /* WFCUMyPortraitViewController.m */; };
+		2F551225217F5CC300F56C26 /* WFCUFriendRequestTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551087217F5CC200F56C26 /* WFCUFriendRequestTableViewCell.m */; };
+		2F551226217F5CC300F56C26 /* WFCUFriendRequestTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F551088217F5CC200F56C26 /* WFCUFriendRequestTableViewCell.h */; };
+		2F551227217F5CC300F56C26 /* WFCUFriendRequestViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55108A217F5CC200F56C26 /* WFCUFriendRequestViewController.h */; };
+		2F551228217F5CC300F56C26 /* WFCUFriendRequestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55108B217F5CC200F56C26 /* WFCUFriendRequestViewController.m */; };
+		2F551229217F5CC300F56C26 /* WFCUMediaMessageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55108D217F5CC200F56C26 /* WFCUMediaMessageDownloader.h */; };
+		2F55122A217F5CC300F56C26 /* WFCUUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F55108E217F5CC200F56C26 /* WFCUUtilities.h */; };
+		2F55122B217F5CC300F56C26 /* WFCUMediaMessageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F55108F217F5CC200F56C26 /* WFCUMediaMessageDownloader.m */; };
+		2F55122C217F5CC300F56C26 /* WFCUUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F551090217F5CC200F56C26 /* WFCUUtilities.m */; };
+		2F9CE41C21BFE5D9005E1BE1 /* WFCUSearchChannelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F9CE41A21BFE5D9005E1BE1 /* WFCUSearchChannelViewController.m */; };
+		2F9CE41D21BFE5D9005E1BE1 /* WFCUSearchChannelViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F9CE41B21BFE5D9005E1BE1 /* WFCUSearchChannelViewController.h */; };
+		2F9CE42021BFE63C005E1BE1 /* WFCUChannelProfileViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F9CE41E21BFE63C005E1BE1 /* WFCUChannelProfileViewController.h */; };
+		2F9CE42121BFE63C005E1BE1 /* WFCUChannelProfileViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F9CE41F21BFE63C005E1BE1 /* WFCUChannelProfileViewController.m */; };
+		2FD2EE80218F15B500CBA8B0 /* WFCUVerifyRequestViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FD2EE7E218F15B500CBA8B0 /* WFCUVerifyRequestViewController.h */; };
+		2FD2EE81218F15B500CBA8B0 /* WFCUVerifyRequestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FD2EE7F218F15B500CBA8B0 /* WFCUVerifyRequestViewController.m */; };
+		2FE689A821AE9C0200DE54CC /* WFCUConversationSearchTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FE689A621AE9C0100DE54CC /* WFCUConversationSearchTableViewController.m */; };
+		2FE689A921AE9C0200DE54CC /* WFCUConversationSearchTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FE689A721AE9C0200DE54CC /* WFCUConversationSearchTableViewController.h */; };
+		901E270621F152F600A163CB /* LICENSE.md in Resources */ = {isa = PBXBuildFile; fileRef = 901E270121F152F600A163CB /* LICENSE.md */; };
+		901E270721F152F600A163CB /* WebRTC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 901E270421F152F600A163CB /* WebRTC.framework */; };
+		901E270821F152F600A163CB /* WFAVEngineKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 901E270521F152F600A163CB /* WFAVEngineKit.framework */; };
+		9029D0FE21C5D7930002EBAA /* WFCUCreateChannelViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9029D0FC21C5D7930002EBAA /* WFCUCreateChannelViewController.h */; };
+		9029D0FF21C5D7930002EBAA /* WFCUCreateChannelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9029D0FD21C5D7930002EBAA /* WFCUCreateChannelViewController.m */; };
+		90414AFC21AF5A93008EF915 /* WFCUConversationSearchTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 90414AFA21AF5A93008EF915 /* WFCUConversationSearchTableViewCell.h */; };
+		90414AFD21AF5A93008EF915 /* WFCUConversationSearchTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90414AFB21AF5A93008EF915 /* WFCUConversationSearchTableViewCell.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		2F1439F3217F5DAA00B3E38A /* WFCUSearchGroupTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUSearchGroupTableViewCell.h; sourceTree = "<group>"; };
+		2F1439F4217F5DAA00B3E38A /* WFCUSearchGroupTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUSearchGroupTableViewCell.m; sourceTree = "<group>"; };
+		2F143A68217F7D4100B3E38A /* Stickers.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Stickers.bundle; sourceTree = "<group>"; };
+		2F143A69217F7D4100B3E38A /* Emoj.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Emoj.plist; sourceTree = "<group>"; };
+		2F143A82217F86EF00B3E38A /* WFChatUIKit.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = WFChatUIKit.xcassets; sourceTree = "<group>"; };
+		2F337EE5219EE1840086B0F3 /* WFCUTextCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUTextCell.h; sourceTree = "<group>"; };
+		2F36433121C136C400904CAB /* WFCUFavChannelTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUFavChannelTableViewController.h; sourceTree = "<group>"; };
+		2F36433221C136C400904CAB /* WFCUFavChannelTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUFavChannelTableViewController.m; sourceTree = "<group>"; };
+		2F36433521C13C5300904CAB /* WFCUChannelTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUChannelTableViewCell.h; sourceTree = "<group>"; };
+		2F36433621C13C5300904CAB /* WFCUChannelTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUChannelTableViewCell.m; sourceTree = "<group>"; };
+		2F3A6C12219EE941009A8B4B /* WFCUFaceBoard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WFCUFaceBoard.m; path = WFChatUIKit/Vendor/ChatInputBar/FaceBoard/WFCUFaceBoard.m; sourceTree = SOURCE_ROOT; };
+		2F3A6C13219EE941009A8B4B /* WFCUFaceBoard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WFCUFaceBoard.h; path = WFChatUIKit/Vendor/ChatInputBar/FaceBoard/WFCUFaceBoard.h; sourceTree = SOURCE_ROOT; };
+		2F3A6C14219EE941009A8B4B /* WFCUFaceButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WFCUFaceButton.m; path = WFChatUIKit/Vendor/ChatInputBar/FaceBoard/WFCUFaceButton.m; sourceTree = SOURCE_ROOT; };
+		2F3A6C15219EE941009A8B4B /* WFCUFaceButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WFCUFaceButton.h; path = WFChatUIKit/Vendor/ChatInputBar/FaceBoard/WFCUFaceButton.h; sourceTree = SOURCE_ROOT; };
+		2F3A6C16219EE941009A8B4B /* WFCUStickerItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WFCUStickerItem.h; path = WFChatUIKit/Vendor/ChatInputBar/FaceBoard/WFCUStickerItem.h; sourceTree = SOURCE_ROOT; };
+		2F3A6C17219EE941009A8B4B /* WFCUStickerItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WFCUStickerItem.m; path = WFChatUIKit/Vendor/ChatInputBar/FaceBoard/WFCUStickerItem.m; sourceTree = SOURCE_ROOT; };
+		2F44A3A52180B48F00E74EA4 /* WFCUMentionUserTableViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WFCUMentionUserTableViewController.h; sourceTree = "<group>"; };
+		2F44A3A62180B48F00E74EA4 /* WFCUMentionUserTableViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WFCUMentionUserTableViewController.m; sourceTree = "<group>"; };
+		2F4991062189239E005F6A84 /* WFCUFloatingWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUFloatingWindow.m; sourceTree = "<group>"; };
+		2F4991072189239E005F6A84 /* WFCUVideoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUVideoViewController.h; sourceTree = "<group>"; };
+		2F4991082189239E005F6A84 /* WFCUVideoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUVideoViewController.m; sourceTree = "<group>"; };
+		2F4991092189239E005F6A84 /* WFCUFloatingWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUFloatingWindow.h; sourceTree = "<group>"; };
+		2F550BDF217F4D7B00F56C26 /* WFChatUIKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = WFChatUIKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		2F550BE2217F4D7B00F56C26 /* WFChatUIKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WFChatUIKit.h; sourceTree = "<group>"; };
+		2F550BE3217F4D7B00F56C26 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		2F550BEC217F4DCD00F56C26 /* WFChatClient.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WFChatClient.framework; path = Frameworks/WFChatClient.framework; sourceTree = SOURCE_ROOT; };
+		2F550EB4217F5CC000F56C26 /* WFCUMediaMessageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUMediaMessageCell.m; sourceTree = "<group>"; };
+		2F550EB5217F5CC000F56C26 /* WFCULocationCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCULocationCell.h; sourceTree = "<group>"; };
+		2F550EB6217F5CC000F56C26 /* WFCUFileCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUFileCell.m; sourceTree = "<group>"; };
+		2F550EB7217F5CC000F56C26 /* WFCUCallSummaryCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUCallSummaryCell.m; sourceTree = "<group>"; };
+		2F550EB8217F5CC000F56C26 /* WFCUInformationCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUInformationCell.m; sourceTree = "<group>"; };
+		2F550EB9217F5CC000F56C26 /* WFCUImageCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUImageCell.h; sourceTree = "<group>"; };
+		2F550EBA217F5CC000F56C26 /* WFCUVoiceCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUVoiceCell.m; sourceTree = "<group>"; };
+		2F550EBB217F5CC000F56C26 /* WFCUMessageCellBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUMessageCellBase.h; sourceTree = "<group>"; };
+		2F550EBC217F5CC000F56C26 /* WFCUTextCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUTextCell.m; sourceTree = "<group>"; };
+		2F550EBD217F5CC000F56C26 /* WFCUVideoCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUVideoCell.m; sourceTree = "<group>"; };
+		2F550EBE217F5CC000F56C26 /* WFCUMessageCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUMessageCell.h; sourceTree = "<group>"; };
+		2F550EBF217F5CC000F56C26 /* WFCUStickerCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUStickerCell.h; sourceTree = "<group>"; };
+		2F550EC0217F5CC000F56C26 /* WFCUMediaMessageCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUMediaMessageCell.h; sourceTree = "<group>"; };
+		2F550EC1217F5CC000F56C26 /* WFCUFileCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUFileCell.h; sourceTree = "<group>"; };
+		2F550EC2217F5CC000F56C26 /* WFCULocationCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCULocationCell.m; sourceTree = "<group>"; };
+		2F550EC4217F5CC000F56C26 /* WFCUMessageCellBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUMessageCellBase.m; sourceTree = "<group>"; };
+		2F550EC5217F5CC000F56C26 /* WFCUVoiceCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUVoiceCell.h; sourceTree = "<group>"; };
+		2F550EC6217F5CC000F56C26 /* WFCUImageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUImageCell.m; sourceTree = "<group>"; };
+		2F550EC7217F5CC000F56C26 /* WFCUInformationCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUInformationCell.h; sourceTree = "<group>"; };
+		2F550EC8217F5CC000F56C26 /* WFCUCallSummaryCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUCallSummaryCell.h; sourceTree = "<group>"; };
+		2F550EC9217F5CC000F56C26 /* WFCUStickerCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUStickerCell.m; sourceTree = "<group>"; };
+		2F550ECA217F5CC000F56C26 /* WFCUMessageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUMessageCell.m; sourceTree = "<group>"; };
+		2F550ECB217F5CC000F56C26 /* WFCUVideoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUVideoCell.h; sourceTree = "<group>"; };
+		2F550ECD217F5CC000F56C26 /* WFCUMessageModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUMessageModel.m; sourceTree = "<group>"; };
+		2F550ECE217F5CC000F56C26 /* WFCUMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUMessageModel.h; sourceTree = "<group>"; };
+		2F550ED0217F5CC000F56C26 /* WFCUMessageListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUMessageListViewController.m; sourceTree = "<group>"; };
+		2F550ED1217F5CC000F56C26 /* WFCUMessageListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUMessageListViewController.h; sourceTree = "<group>"; };
+		2F550ED3217F5CC000F56C26 /* WFCUProfileTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUProfileTableViewController.h; sourceTree = "<group>"; };
+		2F550ED4217F5CC000F56C26 /* WFCUGroupMemberTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUGroupMemberTableViewCell.m; sourceTree = "<group>"; };
+		2F550ED5217F5CC000F56C26 /* WFCUInviteGroupMemberViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUInviteGroupMemberViewController.h; sourceTree = "<group>"; };
+		2F550ED6217F5CC000F56C26 /* WFCUGroupMemberTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUGroupMemberTableViewController.h; sourceTree = "<group>"; };
+		2F550ED7217F5CC000F56C26 /* WFCUGroupTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUGroupTableViewCell.m; sourceTree = "<group>"; };
+		2F550ED8217F5CC000F56C26 /* WFCUImagePreviewViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUImagePreviewViewController.h; sourceTree = "<group>"; };
+		2F550ED9217F5CC000F56C26 /* WFCUSearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUSearchViewController.m; sourceTree = "<group>"; };
+		2F550EDA217F5CC000F56C26 /* WFCUGeneralModifyViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUGeneralModifyViewController.m; sourceTree = "<group>"; };
+		2F550EDB217F5CC000F56C26 /* WFCUBrowserViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUBrowserViewController.m; sourceTree = "<group>"; };
+		2F550EDC217F5CC000F56C26 /* WFCUProfileTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUProfileTableViewController.m; sourceTree = "<group>"; };
+		2F550EDD217F5CC000F56C26 /* WFCUGroupMemberTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUGroupMemberTableViewCell.h; sourceTree = "<group>"; };
+		2F550EDE217F5CC000F56C26 /* WFCUImagePreviewViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUImagePreviewViewController.m; sourceTree = "<group>"; };
+		2F550EDF217F5CC000F56C26 /* WFCUGroupTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUGroupTableViewCell.h; sourceTree = "<group>"; };
+		2F550EE0217F5CC000F56C26 /* WFCUGroupMemberTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUGroupMemberTableViewController.m; sourceTree = "<group>"; };
+		2F550EE1217F5CC000F56C26 /* WFCUInviteGroupMemberViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUInviteGroupMemberViewController.m; sourceTree = "<group>"; };
+		2F550EE2217F5CC000F56C26 /* WFCUBrowserViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUBrowserViewController.h; sourceTree = "<group>"; };
+		2F550EE3217F5CC000F56C26 /* WFCUGeneralModifyViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUGeneralModifyViewController.h; sourceTree = "<group>"; };
+		2F550EE4217F5CC000F56C26 /* WFCUSearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUSearchViewController.h; sourceTree = "<group>"; };
+		2F550EE7217F5CC000F56C26 /* WFCUCreateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUCreateGroupViewController.m; sourceTree = "<group>"; };
+		2F550EE8217F5CC000F56C26 /* WFCUCreateGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUCreateGroupViewController.h; sourceTree = "<group>"; };
+		2F550EF0217F5CC000F56C26 /* WFCUFavGroupTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUFavGroupTableViewController.h; sourceTree = "<group>"; };
+		2F550EF1217F5CC000F56C26 /* WFCUFavGroupTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUFavGroupTableViewController.m; sourceTree = "<group>"; };
+		2F550EF4217F5CC000F56C26 /* WFCULocationViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCULocationViewController.m; sourceTree = "<group>"; };
+		2F550EF5217F5CC000F56C26 /* WFCUPluginItemView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUPluginItemView.h; sourceTree = "<group>"; };
+		2F550EF6217F5CC000F56C26 /* WFCUSelectFileViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUSelectFileViewController.m; sourceTree = "<group>"; };
+		2F550EF7217F5CC000F56C26 /* WFCUPluginBoardView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUPluginBoardView.h; sourceTree = "<group>"; };
+		2F550EF8217F5CC000F56C26 /* WFCUChatInputBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUChatInputBar.h; sourceTree = "<group>"; };
+		2F550EF9217F5CC000F56C26 /* WFCUVoiceRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUVoiceRecordView.h; sourceTree = "<group>"; };
+		2F550EFA217F5CC000F56C26 /* WFCUSelectedFileCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUSelectedFileCollectionViewCell.h; sourceTree = "<group>"; };
+		2F550F14217F5CC100F56C26 /* WFCUEmotionTextAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUEmotionTextAttachment.m; sourceTree = "<group>"; };
+		2F550F15217F5CC100F56C26 /* WFCULocationPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCULocationPoint.h; sourceTree = "<group>"; };
+		2F550F16217F5CC100F56C26 /* WFCUPluginItemView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUPluginItemView.m; sourceTree = "<group>"; };
+		2F550F17217F5CC100F56C26 /* WFCULocationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCULocationViewController.h; sourceTree = "<group>"; };
+		2F550F18217F5CC100F56C26 /* WFCUChatInputBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUChatInputBar.m; sourceTree = "<group>"; };
+		2F550F19217F5CC100F56C26 /* WFCUPluginBoardView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUPluginBoardView.m; sourceTree = "<group>"; };
+		2F550F1A217F5CC100F56C26 /* WFCUSelectFileViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUSelectFileViewController.h; sourceTree = "<group>"; };
+		2F550F1B217F5CC100F56C26 /* WFCUEmotionTextAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUEmotionTextAttachment.h; sourceTree = "<group>"; };
+		2F550F1C217F5CC100F56C26 /* WFCUSelectedFileCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUSelectedFileCollectionViewCell.m; sourceTree = "<group>"; };
+		2F550F1D217F5CC100F56C26 /* WFCUVoiceRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUVoiceRecordView.m; sourceTree = "<group>"; };
+		2F550F1E217F5CC100F56C26 /* WFCULocationPoint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCULocationPoint.m; sourceTree = "<group>"; };
+		2F550F20217F5CC100F56C26 /* CCHMapTreeUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHMapTreeUtils.m; sourceTree = "<group>"; };
+		2F550F21217F5CC100F56C26 /* CCHMapClusterControllerDebugPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapClusterControllerDebugPolygon.h; sourceTree = "<group>"; };
+		2F550F22217F5CC100F56C26 /* CCHMapTree.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHMapTree.m; sourceTree = "<group>"; };
+		2F550F23217F5CC100F56C26 /* CCHMapClusterController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHMapClusterController.m; sourceTree = "<group>"; };
+		2F550F24217F5CC100F56C26 /* CCHMapClusterControllerUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHMapClusterControllerUtils.m; sourceTree = "<group>"; };
+		2F550F25217F5CC100F56C26 /* CCHMapClusterOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHMapClusterOperation.m; sourceTree = "<group>"; };
+		2F550F26217F5CC100F56C26 /* CCHCenterOfMassMapClusterer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHCenterOfMassMapClusterer.h; sourceTree = "<group>"; };
+		2F550F27217F5CC100F56C26 /* CCHMapViewDelegateProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapViewDelegateProxy.h; sourceTree = "<group>"; };
+		2F550F28217F5CC100F56C26 /* CCHMapAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapAnimator.h; sourceTree = "<group>"; };
+		2F550F29217F5CC100F56C26 /* CCHMapClusterAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHMapClusterAnnotation.m; sourceTree = "<group>"; };
+		2F550F2A217F5CC100F56C26 /* CCHFadeInOutMapAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHFadeInOutMapAnimator.h; sourceTree = "<group>"; };
+		2F550F2B217F5CC100F56C26 /* CCHNearCenterMapClusterer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHNearCenterMapClusterer.h; sourceTree = "<group>"; };
+		2F550F2C217F5CC100F56C26 /* CCHMapClusterControllerDebugPolygon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHMapClusterControllerDebugPolygon.m; sourceTree = "<group>"; };
+		2F550F2D217F5CC100F56C26 /* CCHMapClusterControllerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapClusterControllerDelegate.h; sourceTree = "<group>"; };
+		2F550F2E217F5CC100F56C26 /* CCHMapTreeUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapTreeUtils.h; sourceTree = "<group>"; };
+		2F550F2F217F5CC100F56C26 /* CCHMapClusterController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapClusterController.h; sourceTree = "<group>"; };
+		2F550F30217F5CC100F56C26 /* CCHMapClusterer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapClusterer.h; sourceTree = "<group>"; };
+		2F550F31217F5CC100F56C26 /* CCHMapTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapTree.h; sourceTree = "<group>"; };
+		2F550F32217F5CC100F56C26 /* CCHMapClusterControllerUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapClusterControllerUtils.h; sourceTree = "<group>"; };
+		2F550F33217F5CC100F56C26 /* CCHMapClusterOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapClusterOperation.h; sourceTree = "<group>"; };
+		2F550F34217F5CC100F56C26 /* CCHNearCenterMapClusterer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHNearCenterMapClusterer.m; sourceTree = "<group>"; };
+		2F550F35217F5CC100F56C26 /* CCHFadeInOutMapAnimator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHFadeInOutMapAnimator.m; sourceTree = "<group>"; };
+		2F550F36217F5CC100F56C26 /* CCHMapClusterAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHMapClusterAnnotation.h; sourceTree = "<group>"; };
+		2F550F37217F5CC100F56C26 /* CCHMapViewDelegateProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHMapViewDelegateProxy.m; sourceTree = "<group>"; };
+		2F550F38217F5CC100F56C26 /* CCHCenterOfMassMapClusterer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHCenterOfMassMapClusterer.m; sourceTree = "<group>"; };
+		2F550F3D217F5CC100F56C26 /* pinyin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pinyin.h; sourceTree = "<group>"; };
+		2F550F3E217F5CC100F56C26 /* pinyin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pinyin.c; sourceTree = "<group>"; };
+		2F550F40217F5CC100F56C26 /* VideoPlayerSampleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoPlayerSampleViewController.h; sourceTree = "<group>"; };
+		2F550F41217F5CC100F56C26 /* FullScreenView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FullScreenView.h; sourceTree = "<group>"; };
+		2F550F42217F5CC100F56C26 /* AirplayActiveView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AirplayActiveView.m; sourceTree = "<group>"; };
+		2F550F43217F5CC100F56C26 /* VideoPlayerSampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoPlayerSampleView.h; sourceTree = "<group>"; };
+		2F550F44217F5CC100F56C26 /* FullScreenViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FullScreenViewController.h; sourceTree = "<group>"; };
+		2F550F45217F5CC100F56C26 /* VideoPlayerKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoPlayerKit.h; sourceTree = "<group>"; };
+		2F550F46217F5CC100F56C26 /* VideoPlayerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoPlayerView.h; sourceTree = "<group>"; };
+		2F550F47217F5CC100F56C26 /* VideoPlayerSampleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoPlayerSampleViewController.m; sourceTree = "<group>"; };
+		2F550F48217F5CC100F56C26 /* VideoPlayerSampleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoPlayerSampleView.m; sourceTree = "<group>"; };
+		2F550F49217F5CC100F56C26 /* AirplayActiveView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AirplayActiveView.h; sourceTree = "<group>"; };
+		2F550F4A217F5CC100F56C26 /* FullScreenView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FullScreenView.m; sourceTree = "<group>"; };
+		2F550F5A217F5CC100F56C26 /* FullScreenViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FullScreenViewController.m; sourceTree = "<group>"; };
+		2F550F5B217F5CC100F56C26 /* VideoPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoPlayer.h; sourceTree = "<group>"; };
+		2F550F5C217F5CC100F56C26 /* VideoPlayerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoPlayerView.m; sourceTree = "<group>"; };
+		2F550F5D217F5CC100F56C26 /* VideoPlayerKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoPlayerKit.m; sourceTree = "<group>"; };
+		2F550F8E217F5CC100F56C26 /* KZVideoListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KZVideoListViewController.h; sourceTree = "<group>"; };
+		2F550F8F217F5CC100F56C26 /* KZVideoConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KZVideoConfig.m; sourceTree = "<group>"; };
+		2F550F90217F5CC100F56C26 /* KZVideoSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KZVideoSupport.h; sourceTree = "<group>"; };
+		2F550F91217F5CC100F56C26 /* KZVideoPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KZVideoPlayer.m; sourceTree = "<group>"; };
+		2F550F92217F5CC100F56C26 /* KZVideoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KZVideoViewController.m; sourceTree = "<group>"; };
+		2F550F93217F5CC100F56C26 /* KZVideoConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KZVideoConfig.h; sourceTree = "<group>"; };
+		2F550F94217F5CC100F56C26 /* KZVideoListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KZVideoListViewController.m; sourceTree = "<group>"; };
+		2F550F95217F5CC100F56C26 /* KZVideoSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KZVideoSupport.m; sourceTree = "<group>"; };
+		2F550F96217F5CC100F56C26 /* KZVideoPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KZVideoPlayer.h; sourceTree = "<group>"; };
+		2F550F97217F5CC100F56C26 /* KZVideoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KZVideoViewController.h; sourceTree = "<group>"; };
+		2F550F99217F5CC100F56C26 /* SDPhotoBrowserConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDPhotoBrowserConfig.h; sourceTree = "<group>"; };
+		2F550F9A217F5CC100F56C26 /* SDPhotoBrowser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDPhotoBrowser.m; sourceTree = "<group>"; };
+		2F550F9B217F5CC100F56C26 /* SDWaitingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWaitingView.m; sourceTree = "<group>"; };
+		2F550F9C217F5CC100F56C26 /* SDBrowserImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDBrowserImageView.m; sourceTree = "<group>"; };
+		2F550F9D217F5CC100F56C26 /* SDWaitingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWaitingView.h; sourceTree = "<group>"; };
+		2F550F9E217F5CC100F56C26 /* SDPhotoBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDPhotoBrowser.h; sourceTree = "<group>"; };
+		2F550F9F217F5CC100F56C26 /* SDBrowserImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDBrowserImageView.h; sourceTree = "<group>"; };
+		2F550FA1217F5CC100F56C26 /* KxMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KxMenu.m; sourceTree = "<group>"; };
+		2F550FA2217F5CC100F56C26 /* KxMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KxMenu.h; sourceTree = "<group>"; };
+		2F550FA4217F5CC100F56C26 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFSecurityPolicy.h; sourceTree = "<group>"; };
+		2F550FA5217F5CC100F56C26 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFNetworkReachabilityManager.h; sourceTree = "<group>"; };
+		2F550FA6217F5CC100F56C26 /* AFURLSessionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFURLSessionManager.h; sourceTree = "<group>"; };
+		2F550FA7217F5CC100F56C26 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFURLRequestSerialization.h; sourceTree = "<group>"; };
+		2F550FA8217F5CC100F56C26 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFURLResponseSerialization.m; sourceTree = "<group>"; };
+		2F550FA9217F5CC100F56C26 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFHTTPSessionManager.m; sourceTree = "<group>"; };
+		2F550FAA217F5CC100F56C26 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFURLResponseSerialization.h; sourceTree = "<group>"; };
+		2F550FAB217F5CC100F56C26 /* AFURLSessionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFURLSessionManager.m; sourceTree = "<group>"; };
+		2F550FAC217F5CC100F56C26 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFURLRequestSerialization.m; sourceTree = "<group>"; };
+		2F550FAD217F5CC100F56C26 /* AFNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFNetworking.h; sourceTree = "<group>"; };
+		2F550FAE217F5CC100F56C26 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFNetworkReachabilityManager.m; sourceTree = "<group>"; };
+		2F550FAF217F5CC100F56C26 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFSecurityPolicy.m; sourceTree = "<group>"; };
+		2F550FB0217F5CC100F56C26 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFHTTPSessionManager.h; sourceTree = "<group>"; };
+		2F550FD6217F5CC100F56C26 /* MBProgressHUD.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = "<group>"; };
+		2F550FD7217F5CC100F56C26 /* MBProgressHUD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = "<group>"; };
+		2F550FD9217F5CC100F56C26 /* UIView+SDExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+SDExtension.h"; sourceTree = "<group>"; };
+		2F550FDA217F5CC100F56C26 /* SDRefreshFooterView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDRefreshFooterView.h; sourceTree = "<group>"; };
+		2F550FDB217F5CC100F56C26 /* SDRefreshView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDRefreshView.h; sourceTree = "<group>"; };
+		2F550FDC217F5CC100F56C26 /* SDRefreshHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDRefreshHeaderView.m; sourceTree = "<group>"; };
+		2F550FDE217F5CC100F56C26 /* UIView+SDExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+SDExtension.m"; sourceTree = "<group>"; };
+		2F550FDF217F5CC100F56C26 /* SDRefreshFooterView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDRefreshFooterView.m; sourceTree = "<group>"; };
+		2F550FE0217F5CC100F56C26 /* SDRefresh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDRefresh.h; sourceTree = "<group>"; };
+		2F550FE1217F5CC100F56C26 /* SDRefreshHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDRefreshHeaderView.h; sourceTree = "<group>"; };
+		2F550FE2217F5CC100F56C26 /* SDRefreshView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDRefreshView.m; sourceTree = "<group>"; };
+		2F550FE4217F5CC100F56C26 /* UITextView+Placeholder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITextView+Placeholder.m"; sourceTree = "<group>"; };
+		2F550FE5217F5CC100F56C26 /* UITextView+Placeholder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITextView+Placeholder.h"; sourceTree = "<group>"; };
+		2F550FED217F5CC100F56C26 /* UIImage+WebP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+WebP.m"; sourceTree = "<group>"; };
+		2F550FEE217F5CC100F56C26 /* MKAnnotationView+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MKAnnotationView+WebCache.m"; sourceTree = "<group>"; };
+		2F550FEF217F5CC100F56C26 /* NSImage+WebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage+WebCache.h"; sourceTree = "<group>"; };
+		2F550FF0217F5CC100F56C26 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImageView+WebCache.h"; sourceTree = "<group>"; };
+		2F550FF1217F5CC100F56C26 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ImageContentType.h"; sourceTree = "<group>"; };
+		2F550FF2217F5CC100F56C26 /* SDWebImageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageManager.m; sourceTree = "<group>"; };
+		2F550FF3217F5CC100F56C26 /* SDWebImageDecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageDecoder.m; sourceTree = "<group>"; };
+		2F550FF4217F5CC100F56C26 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageDownloaderOperation.h; sourceTree = "<group>"; };
+		2F550FF5217F5CC100F56C26 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImageView+HighlightedWebCache.m"; sourceTree = "<group>"; };
+		2F550FF6217F5CC100F56C26 /* SDImageCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDImageCache.h; sourceTree = "<group>"; };
+		2F550FF7217F5CC100F56C26 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDImageCacheConfig.h; sourceTree = "<group>"; };
+		2F550FF9217F5CC100F56C26 /* FLAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImageView+WebCache.m"; sourceTree = "<group>"; };
+		2F550FFB217F5CC100F56C26 /* FLAnimatedImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLAnimatedImage.m; sourceTree = "<group>"; };
+		2F550FFC217F5CC100F56C26 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLAnimatedImageView.m; sourceTree = "<group>"; };
+		2F550FFD217F5CC100F56C26 /* FLAnimatedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLAnimatedImage.h; sourceTree = "<group>"; };
+		2F550FFE217F5CC100F56C26 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLAnimatedImageView.h; sourceTree = "<group>"; };
+		2F550FFF217F5CC100F56C26 /* FLAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImageView+WebCache.h"; sourceTree = "<group>"; };
+		2F551000217F5CC100F56C26 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageDownloader.m; sourceTree = "<group>"; };
+		2F551001217F5CC100F56C26 /* UIImage+GIF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+GIF.m"; sourceTree = "<group>"; };
+		2F551002217F5CC100F56C26 /* UIButton+WebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIButton+WebCache.h"; sourceTree = "<group>"; };
+		2F551003217F5CC100F56C26 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+MultiFormat.m"; sourceTree = "<group>"; };
+		2F551004217F5CC100F56C26 /* SDWebImageCompat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageCompat.m; sourceTree = "<group>"; };
+		2F551005217F5CC100F56C26 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImagePrefetcher.m; sourceTree = "<group>"; };
+		2F551006217F5CC100F56C26 /* SDWebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImage.h; sourceTree = "<group>"; };
+		2F551007217F5CC100F56C26 /* UIView+WebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+WebCache.h"; sourceTree = "<group>"; };
+		2F551008217F5CC100F56C26 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+WebCacheOperation.h"; sourceTree = "<group>"; };
+		2F551009217F5CC100F56C26 /* MKAnnotationView+WebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MKAnnotationView+WebCache.h"; sourceTree = "<group>"; };
+		2F55100A217F5CC100F56C26 /* UIImage+WebP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+WebP.h"; sourceTree = "<group>"; };
+		2F55100B217F5CC100F56C26 /* SDImageCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDImageCache.m; sourceTree = "<group>"; };
+		2F55100C217F5CC100F56C26 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImageView+HighlightedWebCache.h"; sourceTree = "<group>"; };
+		2F55100D217F5CC100F56C26 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageDownloaderOperation.m; sourceTree = "<group>"; };
+		2F55100E217F5CC100F56C26 /* SDWebImageDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageDecoder.h; sourceTree = "<group>"; };
+		2F55100F217F5CC100F56C26 /* SDWebImageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageManager.h; sourceTree = "<group>"; };
+		2F551010217F5CC100F56C26 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ImageContentType.m"; sourceTree = "<group>"; };
+		2F551011217F5CC100F56C26 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImageView+WebCache.m"; sourceTree = "<group>"; };
+		2F551012217F5CC100F56C26 /* SDWebImageOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageOperation.h; sourceTree = "<group>"; };
+		2F551013217F5CC100F56C26 /* NSImage+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSImage+WebCache.m"; sourceTree = "<group>"; };
+		2F551014217F5CC100F56C26 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageDownloader.h; sourceTree = "<group>"; };
+		2F551015217F5CC100F56C26 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDImageCacheConfig.m; sourceTree = "<group>"; };
+		2F551016217F5CC100F56C26 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+WebCacheOperation.m"; sourceTree = "<group>"; };
+		2F551017217F5CC100F56C26 /* UIView+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+WebCache.m"; sourceTree = "<group>"; };
+		2F551018217F5CC100F56C26 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImagePrefetcher.h; sourceTree = "<group>"; };
+		2F551019217F5CC100F56C26 /* SDWebImageCompat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageCompat.h; sourceTree = "<group>"; };
+		2F55101A217F5CC100F56C26 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+MultiFormat.h"; sourceTree = "<group>"; };
+		2F55101B217F5CC100F56C26 /* UIButton+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIButton+WebCache.m"; sourceTree = "<group>"; };
+		2F55101C217F5CC100F56C26 /* UIImage+GIF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+GIF.h"; sourceTree = "<group>"; };
+		2F55101E217F5CC100F56C26 /* TYAlertView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYAlertView.m; sourceTree = "<group>"; };
+		2F55101F217F5CC100F56C26 /* TYAlertDropDownAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TYAlertDropDownAnimation.h; sourceTree = "<group>"; };
+		2F551020217F5CC100F56C26 /* UIView+TYAutoLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+TYAutoLayout.h"; sourceTree = "<group>"; };
+		2F551021217F5CC100F56C26 /* TYShowAlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TYShowAlertView.h; sourceTree = "<group>"; };
+		2F551022217F5CC100F56C26 /* UIView+TYAlertView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+TYAlertView.m"; sourceTree = "<group>"; };
+		2F551023217F5CC100F56C26 /* TYAlertScaleFadeAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYAlertScaleFadeAnimation.m; sourceTree = "<group>"; };
+		2F551024217F5CC100F56C26 /* TYBaseAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TYBaseAnimation.h; sourceTree = "<group>"; };
+		2F551025217F5CC100F56C26 /* TYAlertFadeAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYAlertFadeAnimation.m; sourceTree = "<group>"; };
+		2F551026217F5CC100F56C26 /* TYAlertController+TransitionAnimate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TYAlertController+TransitionAnimate.m"; sourceTree = "<group>"; };
+		2F551027217F5CC100F56C26 /* TYAlertController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TYAlertController.h; sourceTree = "<group>"; };
+		2F551028217F5CC100F56C26 /* UIView+TYAutoLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+TYAutoLayout.m"; sourceTree = "<group>"; };
+		2F551029217F5CC100F56C26 /* TYAlertDropDownAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYAlertDropDownAnimation.m; sourceTree = "<group>"; };
+		2F55102A217F5CC100F56C26 /* TYAlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TYAlertView.h; sourceTree = "<group>"; };
+		2F55102B217F5CC100F56C26 /* UIView+TYAlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+TYAlertView.h"; sourceTree = "<group>"; };
+		2F55102C217F5CC100F56C26 /* TYShowAlertView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYShowAlertView.m; sourceTree = "<group>"; };
+		2F55102D217F5CC100F56C26 /* TYBaseAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYBaseAnimation.m; sourceTree = "<group>"; };
+		2F55102E217F5CC100F56C26 /* TYAlertScaleFadeAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TYAlertScaleFadeAnimation.h; sourceTree = "<group>"; };
+		2F55102F217F5CC100F56C26 /* TYAlertController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYAlertController.m; sourceTree = "<group>"; };
+		2F551030217F5CC100F56C26 /* TYAlertFadeAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TYAlertFadeAnimation.h; sourceTree = "<group>"; };
+		2F551032217F5CC100F56C26 /* YLGIFImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YLGIFImage.m; sourceTree = "<group>"; };
+		2F551033217F5CC100F56C26 /* YLImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YLImageView.m; sourceTree = "<group>"; };
+		2F551034217F5CC100F56C26 /* YLGIFImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YLGIFImage.h; sourceTree = "<group>"; };
+		2F551035217F5CC100F56C26 /* YLImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YLImageView.h; sourceTree = "<group>"; };
+		2F551036217F5CC100F56C26 /* Predefine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Predefine.h; sourceTree = "<group>"; };
+		2F551038217F5CC100F56C26 /* WFCUForwardViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUForwardViewController.m; sourceTree = "<group>"; };
+		2F551039217F5CC100F56C26 /* WFCUForwardMessageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUForwardMessageCell.m; sourceTree = "<group>"; };
+		2F55103A217F5CC100F56C26 /* WFCUShareMessageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUShareMessageView.m; sourceTree = "<group>"; };
+		2F55103B217F5CC100F56C26 /* WFCUForwardViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUForwardViewController.h; sourceTree = "<group>"; };
+		2F55103C217F5CC100F56C26 /* WFCUShareMessageView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WFCUShareMessageView.xib; sourceTree = "<group>"; };
+		2F55103D217F5CC100F56C26 /* WFCUShareMessageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUShareMessageView.h; sourceTree = "<group>"; };
+		2F55103E217F5CC100F56C26 /* WFCUForwardMessageCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUForwardMessageCell.h; sourceTree = "<group>"; };
+		2F551040217F5CC100F56C26 /* TabbarButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TabbarButton.h; sourceTree = "<group>"; };
+		2F551041217F5CC100F56C26 /* UIImage+ERCategory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+ERCategory.h"; sourceTree = "<group>"; };
+		2F551042217F5CC100F56C26 /* AttributedLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AttributedLabel.h; sourceTree = "<group>"; };
+		2F551043217F5CC100F56C26 /* BubbleTipView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BubbleTipView.m; sourceTree = "<group>"; };
+		2F551044217F5CC100F56C26 /* UIView+Toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Toast.h"; sourceTree = "<group>"; };
+		2F551045217F5CC100F56C26 /* UIView+Screenshot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Screenshot.h"; sourceTree = "<group>"; };
+		2F551046217F5CC100F56C26 /* UITabBar+badge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITabBar+badge.h"; sourceTree = "<group>"; };
+		2F551047217F5CC100F56C26 /* AttributedLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AttributedLabel.m; sourceTree = "<group>"; };
+		2F551048217F5CC100F56C26 /* UIImage+ERCategory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+ERCategory.m"; sourceTree = "<group>"; };
+		2F551049217F5CC100F56C26 /* TabbarButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TabbarButton.m; sourceTree = "<group>"; };
+		2F55104A217F5CC100F56C26 /* BubbleTipView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BubbleTipView.h; sourceTree = "<group>"; };
+		2F55104B217F5CC100F56C26 /* UITabBar+badge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITabBar+badge.m"; sourceTree = "<group>"; };
+		2F55104C217F5CC100F56C26 /* UIView+Screenshot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Screenshot.m"; sourceTree = "<group>"; };
+		2F55104D217F5CC100F56C26 /* UIView+Toast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Toast.m"; sourceTree = "<group>"; };
+		2F551050217F5CC100F56C26 /* WFCUSwitchTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUSwitchTableViewCell.m; sourceTree = "<group>"; };
+		2F551051217F5CC100F56C26 /* WFCUConversationSettingMemberCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUConversationSettingMemberCell.h; sourceTree = "<group>"; };
+		2F551052217F5CC100F56C26 /* WFCUSwitchTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUSwitchTableViewCell.h; sourceTree = "<group>"; };
+		2F551053217F5CC100F56C26 /* WFCUConversationSettingMemberCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUConversationSettingMemberCell.m; sourceTree = "<group>"; };
+		2F551055217F5CC100F56C26 /* WFCUConversationSettingMemberCollectionViewLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUConversationSettingMemberCollectionViewLayout.m; sourceTree = "<group>"; };
+		2F551056217F5CC100F56C26 /* WFCUConversationSettingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUConversationSettingViewController.m; sourceTree = "<group>"; };
+		2F551057217F5CC100F56C26 /* WFCUConversationSettingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUConversationSettingViewController.h; sourceTree = "<group>"; };
+		2F551058217F5CC100F56C26 /* WFCUConversationSettingMemberCollectionViewLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUConversationSettingMemberCollectionViewLayout.h; sourceTree = "<group>"; };
+		2F55105B217F5CC100F56C26 /* WFCUConversationTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUConversationTableViewCell.h; sourceTree = "<group>"; };
+		2F55105D217F5CC100F56C26 /* WFCUConversationTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUConversationTableViewCell.m; sourceTree = "<group>"; };
+		2F551063217F5CC100F56C26 /* WFCUConversationTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUConversationTableViewController.h; sourceTree = "<group>"; };
+		2F551064217F5CC100F56C26 /* WFCUConversationTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUConversationTableViewController.m; sourceTree = "<group>"; };
+		2F551067217F5CC100F56C26 /* WFCUNewFriendTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUNewFriendTableViewCell.m; sourceTree = "<group>"; };
+		2F551068217F5CC100F56C26 /* WFCUContactTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUContactTableViewCell.m; sourceTree = "<group>"; };
+		2F551069217F5CC100F56C26 /* WFCUContactSelectTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUContactSelectTableViewCell.m; sourceTree = "<group>"; };
+		2F55106A217F5CC100F56C26 /* WFCUNewFriendTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUNewFriendTableViewCell.h; sourceTree = "<group>"; };
+		2F55106B217F5CC100F56C26 /* WFCUContactTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUContactTableViewCell.h; sourceTree = "<group>"; };
+		2F55106C217F5CC100F56C26 /* WFCUContactSelectTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUContactSelectTableViewCell.h; sourceTree = "<group>"; };
+		2F55106E217F5CC100F56C26 /* WFCUContactListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUContactListViewController.h; sourceTree = "<group>"; };
+		2F55106F217F5CC100F56C26 /* WFCUContactListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUContactListViewController.m; sourceTree = "<group>"; };
+		2F551072217F5CC100F56C26 /* WFCUAddFriendViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUAddFriendViewController.m; sourceTree = "<group>"; };
+		2F551073217F5CC100F56C26 /* WFCUAddFriendViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUAddFriendViewController.h; sourceTree = "<group>"; };
+		2F551076217F5CC100F56C26 /* WFCUMyProfileTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUMyProfileTableViewController.h; sourceTree = "<group>"; };
+		2F55107A217F5CC100F56C26 /* WFCUMyPortraitViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUMyPortraitViewController.h; sourceTree = "<group>"; };
+		2F55107B217F5CC100F56C26 /* WFCUMessageNotificationViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUMessageNotificationViewController.m; sourceTree = "<group>"; };
+		2F55107C217F5CC100F56C26 /* WFCUModifyMyProfileViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUModifyMyProfileViewController.m; sourceTree = "<group>"; };
+		2F551080217F5CC100F56C26 /* WFCUMyProfileTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUMyProfileTableViewController.m; sourceTree = "<group>"; };
+		2F551082217F5CC100F56C26 /* WFCUModifyMyProfileViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUModifyMyProfileViewController.h; sourceTree = "<group>"; };
+		2F551083217F5CC100F56C26 /* WFCUMessageNotificationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUMessageNotificationViewController.h; sourceTree = "<group>"; };
+		2F551084217F5CC100F56C26 /* WFCUMyPortraitViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUMyPortraitViewController.m; sourceTree = "<group>"; };
+		2F551087217F5CC200F56C26 /* WFCUFriendRequestTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUFriendRequestTableViewCell.m; sourceTree = "<group>"; };
+		2F551088217F5CC200F56C26 /* WFCUFriendRequestTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUFriendRequestTableViewCell.h; sourceTree = "<group>"; };
+		2F55108A217F5CC200F56C26 /* WFCUFriendRequestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUFriendRequestViewController.h; sourceTree = "<group>"; };
+		2F55108B217F5CC200F56C26 /* WFCUFriendRequestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUFriendRequestViewController.m; sourceTree = "<group>"; };
+		2F55108D217F5CC200F56C26 /* WFCUMediaMessageDownloader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUMediaMessageDownloader.h; sourceTree = "<group>"; };
+		2F55108E217F5CC200F56C26 /* WFCUUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUUtilities.h; sourceTree = "<group>"; };
+		2F55108F217F5CC200F56C26 /* WFCUMediaMessageDownloader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUMediaMessageDownloader.m; sourceTree = "<group>"; };
+		2F551090217F5CC200F56C26 /* WFCUUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUUtilities.m; sourceTree = "<group>"; };
+		2F9CE41A21BFE5D9005E1BE1 /* WFCUSearchChannelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUSearchChannelViewController.m; sourceTree = "<group>"; };
+		2F9CE41B21BFE5D9005E1BE1 /* WFCUSearchChannelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUSearchChannelViewController.h; sourceTree = "<group>"; };
+		2F9CE41E21BFE63C005E1BE1 /* WFCUChannelProfileViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUChannelProfileViewController.h; sourceTree = "<group>"; };
+		2F9CE41F21BFE63C005E1BE1 /* WFCUChannelProfileViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUChannelProfileViewController.m; sourceTree = "<group>"; };
+		2FD2EE7E218F15B500CBA8B0 /* WFCUVerifyRequestViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WFCUVerifyRequestViewController.h; sourceTree = "<group>"; };
+		2FD2EE7F218F15B500CBA8B0 /* WFCUVerifyRequestViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WFCUVerifyRequestViewController.m; sourceTree = "<group>"; };
+		2FE689A621AE9C0100DE54CC /* WFCUConversationSearchTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUConversationSearchTableViewController.m; sourceTree = "<group>"; };
+		2FE689A721AE9C0200DE54CC /* WFCUConversationSearchTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUConversationSearchTableViewController.h; sourceTree = "<group>"; };
+		901E270121F152F600A163CB /* LICENSE.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = "<group>"; };
+		901E270421F152F600A163CB /* WebRTC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebRTC.framework; sourceTree = "<group>"; };
+		901E270521F152F600A163CB /* WFAVEngineKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WFAVEngineKit.framework; sourceTree = "<group>"; };
+		9029D0FC21C5D7930002EBAA /* WFCUCreateChannelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WFCUCreateChannelViewController.h; path = WFChatUIKit/CreateGroup/ViewController/WFCUCreateChannelViewController.h; sourceTree = SOURCE_ROOT; };
+		9029D0FD21C5D7930002EBAA /* WFCUCreateChannelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WFCUCreateChannelViewController.m; path = WFChatUIKit/CreateGroup/ViewController/WFCUCreateChannelViewController.m; sourceTree = SOURCE_ROOT; };
+		90414AFA21AF5A93008EF915 /* WFCUConversationSearchTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WFCUConversationSearchTableViewCell.h; sourceTree = "<group>"; };
+		90414AFB21AF5A93008EF915 /* WFCUConversationSearchTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WFCUConversationSearchTableViewCell.m; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		2F550BDC217F4D7B00F56C26 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				901E270821F152F600A163CB /* WFAVEngineKit.framework in Frameworks */,
+				2F550BF3217F4DCD00F56C26 /* WFChatClient.framework in Frameworks */,
+				901E270721F152F600A163CB /* WebRTC.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		2F143A66217F7D4100B3E38A /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				2F55103C217F5CC100F56C26 /* WFCUShareMessageView.xib */,
+				2F143A68217F7D4100B3E38A /* Stickers.bundle */,
+				2F143A69217F7D4100B3E38A /* Emoj.plist */,
+				2F143A82217F86EF00B3E38A /* WFChatUIKit.xcassets */,
+			);
+			path = Resources;
+			sourceTree = "<group>";
+		};
+		2F44A3A42180B42300E74EA4 /* SelectMentionVC */ = {
+			isa = PBXGroup;
+			children = (
+				2F44A3A52180B48F00E74EA4 /* WFCUMentionUserTableViewController.h */,
+				2F44A3A62180B48F00E74EA4 /* WFCUMentionUserTableViewController.m */,
+			);
+			path = SelectMentionVC;
+			sourceTree = "<group>";
+		};
+		2F4991052189239E005F6A84 /* Voip */ = {
+			isa = PBXGroup;
+			children = (
+				2F4991092189239E005F6A84 /* WFCUFloatingWindow.h */,
+				2F4991062189239E005F6A84 /* WFCUFloatingWindow.m */,
+				2F4991072189239E005F6A84 /* WFCUVideoViewController.h */,
+				2F4991082189239E005F6A84 /* WFCUVideoViewController.m */,
+			);
+			path = Voip;
+			sourceTree = "<group>";
+		};
+		2F550BD5217F4D7B00F56C26 = {
+			isa = PBXGroup;
+			children = (
+				2F550BEA217F4DCD00F56C26 /* Frameworks */,
+				2F550BE1217F4D7B00F56C26 /* WFChatUIKit */,
+				2F550BE0217F4D7B00F56C26 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		2F550BE0217F4D7B00F56C26 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				2F550BDF217F4D7B00F56C26 /* WFChatUIKit.framework */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		2F550BE1217F4D7B00F56C26 /* WFChatUIKit */ = {
+			isa = PBXGroup;
+			children = (
+				901E26FF21F152B200A163CB /* AVEngine */,
+				2F9CE41921BFE5A4005E1BE1 /* Channel */,
+				2F4991052189239E005F6A84 /* Voip */,
+				2F44A3A42180B42300E74EA4 /* SelectMentionVC */,
+				2F551070217F5CC100F56C26 /* AddFriend */,
+				2F55103F217F5CC100F56C26 /* Category */,
+				2F550ED2217F5CC000F56C26 /* CommonVC */,
+				2F551065217F5CC100F56C26 /* Contacts */,
+				2F551059217F5CC100F56C26 /* ConversationList */,
+				2F55104E217F5CC100F56C26 /* ConversationSetting */,
+				2F550EE5217F5CC000F56C26 /* CreateGroup */,
+				2F551037217F5CC100F56C26 /* ForwardMessage */,
+				2F551085217F5CC200F56C26 /* FriendRequest */,
+				2F550EEE217F5CC000F56C26 /* Group */,
+				2F551074217F5CC100F56C26 /* Me */,
+				2F550EB2217F5CC000F56C26 /* MessageList */,
+				2F55108C217F5CC200F56C26 /* Utilities */,
+				2F550EF2217F5CC000F56C26 /* Vendor */,
+				2F550BE2217F4D7B00F56C26 /* WFChatUIKit.h */,
+				2F551036217F5CC100F56C26 /* Predefine.h */,
+				2F550BE3217F4D7B00F56C26 /* Info.plist */,
+				2F143A66217F7D4100B3E38A /* Resources */,
+			);
+			path = WFChatUIKit;
+			sourceTree = "<group>";
+		};
+		2F550BEA217F4DCD00F56C26 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				2F550BEC217F4DCD00F56C26 /* WFChatClient.framework */,
+			);
+			path = Frameworks;
+			sourceTree = "<group>";
+		};
+		2F550EB2217F5CC000F56C26 /* MessageList */ = {
+			isa = PBXGroup;
+			children = (
+				2F550EB3217F5CC000F56C26 /* Cell */,
+				2F550ECC217F5CC000F56C26 /* Model */,
+				2F550ECF217F5CC000F56C26 /* ViewController */,
+			);
+			path = MessageList;
+			sourceTree = "<group>";
+		};
+		2F550EB3217F5CC000F56C26 /* Cell */ = {
+			isa = PBXGroup;
+			children = (
+				2F550EB4217F5CC000F56C26 /* WFCUMediaMessageCell.m */,
+				2F550EB5217F5CC000F56C26 /* WFCULocationCell.h */,
+				2F550EB6217F5CC000F56C26 /* WFCUFileCell.m */,
+				2F550EB7217F5CC000F56C26 /* WFCUCallSummaryCell.m */,
+				2F550EB8217F5CC000F56C26 /* WFCUInformationCell.m */,
+				2F550EB9217F5CC000F56C26 /* WFCUImageCell.h */,
+				2F550EBA217F5CC000F56C26 /* WFCUVoiceCell.m */,
+				2F550EBB217F5CC000F56C26 /* WFCUMessageCellBase.h */,
+				2F550EBC217F5CC000F56C26 /* WFCUTextCell.m */,
+				2F550EBD217F5CC000F56C26 /* WFCUVideoCell.m */,
+				2F550EBE217F5CC000F56C26 /* WFCUMessageCell.h */,
+				2F550EBF217F5CC000F56C26 /* WFCUStickerCell.h */,
+				2F550EC0217F5CC000F56C26 /* WFCUMediaMessageCell.h */,
+				2F550EC1217F5CC000F56C26 /* WFCUFileCell.h */,
+				2F550EC2217F5CC000F56C26 /* WFCULocationCell.m */,
+				2F337EE5219EE1840086B0F3 /* WFCUTextCell.h */,
+				2F550EC4217F5CC000F56C26 /* WFCUMessageCellBase.m */,
+				2F550EC5217F5CC000F56C26 /* WFCUVoiceCell.h */,
+				2F550EC6217F5CC000F56C26 /* WFCUImageCell.m */,
+				2F550EC7217F5CC000F56C26 /* WFCUInformationCell.h */,
+				2F550EC8217F5CC000F56C26 /* WFCUCallSummaryCell.h */,
+				2F550EC9217F5CC000F56C26 /* WFCUStickerCell.m */,
+				2F550ECA217F5CC000F56C26 /* WFCUMessageCell.m */,
+				2F550ECB217F5CC000F56C26 /* WFCUVideoCell.h */,
+			);
+			path = Cell;
+			sourceTree = "<group>";
+		};
+		2F550ECC217F5CC000F56C26 /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				2F550ECD217F5CC000F56C26 /* WFCUMessageModel.m */,
+				2F550ECE217F5CC000F56C26 /* WFCUMessageModel.h */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		2F550ECF217F5CC000F56C26 /* ViewController */ = {
+			isa = PBXGroup;
+			children = (
+				2F550ED0217F5CC000F56C26 /* WFCUMessageListViewController.m */,
+				2F550ED1217F5CC000F56C26 /* WFCUMessageListViewController.h */,
+			);
+			path = ViewController;
+			sourceTree = "<group>";
+		};
+		2F550ED2217F5CC000F56C26 /* CommonVC */ = {
+			isa = PBXGroup;
+			children = (
+				2F550ED3217F5CC000F56C26 /* WFCUProfileTableViewController.h */,
+				2F550ED4217F5CC000F56C26 /* WFCUGroupMemberTableViewCell.m */,
+				2F550ED5217F5CC000F56C26 /* WFCUInviteGroupMemberViewController.h */,
+				2F550ED6217F5CC000F56C26 /* WFCUGroupMemberTableViewController.h */,
+				2F550ED7217F5CC000F56C26 /* WFCUGroupTableViewCell.m */,
+				2F550ED8217F5CC000F56C26 /* WFCUImagePreviewViewController.h */,
+				2F550ED9217F5CC000F56C26 /* WFCUSearchViewController.m */,
+				2F550EDA217F5CC000F56C26 /* WFCUGeneralModifyViewController.m */,
+				2F550EDB217F5CC000F56C26 /* WFCUBrowserViewController.m */,
+				2F550EDC217F5CC000F56C26 /* WFCUProfileTableViewController.m */,
+				2F550EDD217F5CC000F56C26 /* WFCUGroupMemberTableViewCell.h */,
+				2F550EDE217F5CC000F56C26 /* WFCUImagePreviewViewController.m */,
+				2F550EDF217F5CC000F56C26 /* WFCUGroupTableViewCell.h */,
+				2F550EE0217F5CC000F56C26 /* WFCUGroupMemberTableViewController.m */,
+				2F550EE1217F5CC000F56C26 /* WFCUInviteGroupMemberViewController.m */,
+				2F550EE2217F5CC000F56C26 /* WFCUBrowserViewController.h */,
+				2F550EE3217F5CC000F56C26 /* WFCUGeneralModifyViewController.h */,
+				2F550EE4217F5CC000F56C26 /* WFCUSearchViewController.h */,
+			);
+			path = CommonVC;
+			sourceTree = "<group>";
+		};
+		2F550EE5217F5CC000F56C26 /* CreateGroup */ = {
+			isa = PBXGroup;
+			children = (
+				2F550EE6217F5CC000F56C26 /* ViewController */,
+			);
+			path = CreateGroup;
+			sourceTree = "<group>";
+		};
+		2F550EE6217F5CC000F56C26 /* ViewController */ = {
+			isa = PBXGroup;
+			children = (
+				2F550EE7217F5CC000F56C26 /* WFCUCreateGroupViewController.m */,
+				2F550EE8217F5CC000F56C26 /* WFCUCreateGroupViewController.h */,
+			);
+			path = ViewController;
+			sourceTree = "<group>";
+		};
+		2F550EEE217F5CC000F56C26 /* Group */ = {
+			isa = PBXGroup;
+			children = (
+				2F550EEF217F5CC000F56C26 /* ViewController */,
+			);
+			path = Group;
+			sourceTree = "<group>";
+		};
+		2F550EEF217F5CC000F56C26 /* ViewController */ = {
+			isa = PBXGroup;
+			children = (
+				2F550EF0217F5CC000F56C26 /* WFCUFavGroupTableViewController.h */,
+				2F550EF1217F5CC000F56C26 /* WFCUFavGroupTableViewController.m */,
+			);
+			path = ViewController;
+			sourceTree = "<group>";
+		};
+		2F550EF2217F5CC000F56C26 /* Vendor */ = {
+			isa = PBXGroup;
+			children = (
+				2F550EF3217F5CC000F56C26 /* ChatInputBar */,
+				2F550F1F217F5CC100F56C26 /* CCHMapClusterController */,
+				2F550F3C217F5CC100F56C26 /* Pinyin */,
+				2F550F3F217F5CC100F56C26 /* VideoPlayerKit */,
+				2F550F8D217F5CC100F56C26 /* KZSmallVideoRecorder */,
+				2F550F98217F5CC100F56C26 /* SDPhotoBrowser */,
+				2F550FA0217F5CC100F56C26 /* KxMenu */,
+				2F550FA3217F5CC100F56C26 /* AFNetworking */,
+				2F550FD5217F5CC100F56C26 /* MBProgressHUD */,
+				2F550FD8217F5CC100F56C26 /* SDRefeshView */,
+				2F550FE3217F5CC100F56C26 /* UITextViewPlaceholder */,
+				2F550FEC217F5CC100F56C26 /* SDWebImage */,
+				2F55101D217F5CC100F56C26 /* TYAlertController */,
+				2F551031217F5CC100F56C26 /* YLGIFImage */,
+			);
+			path = Vendor;
+			sourceTree = "<group>";
+		};
+		2F550EF3217F5CC000F56C26 /* ChatInputBar */ = {
+			isa = PBXGroup;
+			children = (
+				2F550EF4217F5CC000F56C26 /* WFCULocationViewController.m */,
+				2F550EF5217F5CC000F56C26 /* WFCUPluginItemView.h */,
+				2F550EF6217F5CC000F56C26 /* WFCUSelectFileViewController.m */,
+				2F550EF7217F5CC000F56C26 /* WFCUPluginBoardView.h */,
+				2F550EF8217F5CC000F56C26 /* WFCUChatInputBar.h */,
+				2F550EF9217F5CC000F56C26 /* WFCUVoiceRecordView.h */,
+				2F550EFA217F5CC000F56C26 /* WFCUSelectedFileCollectionViewCell.h */,
+				2F550EFB217F5CC000F56C26 /* FaceBoard */,
+				2F550F14217F5CC100F56C26 /* WFCUEmotionTextAttachment.m */,
+				2F550F15217F5CC100F56C26 /* WFCULocationPoint.h */,
+				2F550F16217F5CC100F56C26 /* WFCUPluginItemView.m */,
+				2F550F17217F5CC100F56C26 /* WFCULocationViewController.h */,
+				2F550F18217F5CC100F56C26 /* WFCUChatInputBar.m */,
+				2F550F19217F5CC100F56C26 /* WFCUPluginBoardView.m */,
+				2F550F1A217F5CC100F56C26 /* WFCUSelectFileViewController.h */,
+				2F550F1B217F5CC100F56C26 /* WFCUEmotionTextAttachment.h */,
+				2F550F1C217F5CC100F56C26 /* WFCUSelectedFileCollectionViewCell.m */,
+				2F550F1D217F5CC100F56C26 /* WFCUVoiceRecordView.m */,
+				2F550F1E217F5CC100F56C26 /* WFCULocationPoint.m */,
+			);
+			path = ChatInputBar;
+			sourceTree = "<group>";
+		};
+		2F550EFB217F5CC000F56C26 /* FaceBoard */ = {
+			isa = PBXGroup;
+			children = (
+				2F3A6C13219EE941009A8B4B /* WFCUFaceBoard.h */,
+				2F3A6C12219EE941009A8B4B /* WFCUFaceBoard.m */,
+				2F3A6C15219EE941009A8B4B /* WFCUFaceButton.h */,
+				2F3A6C14219EE941009A8B4B /* WFCUFaceButton.m */,
+				2F3A6C16219EE941009A8B4B /* WFCUStickerItem.h */,
+				2F3A6C17219EE941009A8B4B /* WFCUStickerItem.m */,
+			);
+			path = FaceBoard;
+			sourceTree = "<group>";
+		};
+		2F550F1F217F5CC100F56C26 /* CCHMapClusterController */ = {
+			isa = PBXGroup;
+			children = (
+				2F550F20217F5CC100F56C26 /* CCHMapTreeUtils.m */,
+				2F550F21217F5CC100F56C26 /* CCHMapClusterControllerDebugPolygon.h */,
+				2F550F22217F5CC100F56C26 /* CCHMapTree.m */,
+				2F550F23217F5CC100F56C26 /* CCHMapClusterController.m */,
+				2F550F24217F5CC100F56C26 /* CCHMapClusterControllerUtils.m */,
+				2F550F25217F5CC100F56C26 /* CCHMapClusterOperation.m */,
+				2F550F26217F5CC100F56C26 /* CCHCenterOfMassMapClusterer.h */,
+				2F550F27217F5CC100F56C26 /* CCHMapViewDelegateProxy.h */,
+				2F550F28217F5CC100F56C26 /* CCHMapAnimator.h */,
+				2F550F29217F5CC100F56C26 /* CCHMapClusterAnnotation.m */,
+				2F550F2A217F5CC100F56C26 /* CCHFadeInOutMapAnimator.h */,
+				2F550F2B217F5CC100F56C26 /* CCHNearCenterMapClusterer.h */,
+				2F550F2C217F5CC100F56C26 /* CCHMapClusterControllerDebugPolygon.m */,
+				2F550F2D217F5CC100F56C26 /* CCHMapClusterControllerDelegate.h */,
+				2F550F2E217F5CC100F56C26 /* CCHMapTreeUtils.h */,
+				2F550F2F217F5CC100F56C26 /* CCHMapClusterController.h */,
+				2F550F30217F5CC100F56C26 /* CCHMapClusterer.h */,
+				2F550F31217F5CC100F56C26 /* CCHMapTree.h */,
+				2F550F32217F5CC100F56C26 /* CCHMapClusterControllerUtils.h */,
+				2F550F33217F5CC100F56C26 /* CCHMapClusterOperation.h */,
+				2F550F34217F5CC100F56C26 /* CCHNearCenterMapClusterer.m */,
+				2F550F35217F5CC100F56C26 /* CCHFadeInOutMapAnimator.m */,
+				2F550F36217F5CC100F56C26 /* CCHMapClusterAnnotation.h */,
+				2F550F37217F5CC100F56C26 /* CCHMapViewDelegateProxy.m */,
+				2F550F38217F5CC100F56C26 /* CCHCenterOfMassMapClusterer.m */,
+			);
+			path = CCHMapClusterController;
+			sourceTree = "<group>";
+		};
+		2F550F3C217F5CC100F56C26 /* Pinyin */ = {
+			isa = PBXGroup;
+			children = (
+				2F550F3D217F5CC100F56C26 /* pinyin.h */,
+				2F550F3E217F5CC100F56C26 /* pinyin.c */,
+			);
+			path = Pinyin;
+			sourceTree = "<group>";
+		};
+		2F550F3F217F5CC100F56C26 /* VideoPlayerKit */ = {
+			isa = PBXGroup;
+			children = (
+				2F550F40217F5CC100F56C26 /* VideoPlayerSampleViewController.h */,
+				2F550F41217F5CC100F56C26 /* FullScreenView.h */,
+				2F550F42217F5CC100F56C26 /* AirplayActiveView.m */,
+				2F550F43217F5CC100F56C26 /* VideoPlayerSampleView.h */,
+				2F550F44217F5CC100F56C26 /* FullScreenViewController.h */,
+				2F550F45217F5CC100F56C26 /* VideoPlayerKit.h */,
+				2F550F46217F5CC100F56C26 /* VideoPlayerView.h */,
+				2F550F47217F5CC100F56C26 /* VideoPlayerSampleViewController.m */,
+				2F550F48217F5CC100F56C26 /* VideoPlayerSampleView.m */,
+				2F550F49217F5CC100F56C26 /* AirplayActiveView.h */,
+				2F550F4A217F5CC100F56C26 /* FullScreenView.m */,
+				2F550F4B217F5CC100F56C26 /* Resource */,
+				2F550F5A217F5CC100F56C26 /* FullScreenViewController.m */,
+				2F550F5B217F5CC100F56C26 /* VideoPlayer.h */,
+				2F550F5C217F5CC100F56C26 /* VideoPlayerView.m */,
+				2F550F5D217F5CC100F56C26 /* VideoPlayerKit.m */,
+			);
+			path = VideoPlayerKit;
+			sourceTree = "<group>";
+		};
+		2F550F4B217F5CC100F56C26 /* Resource */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = Resource;
+			sourceTree = "<group>";
+		};
+		2F550F8D217F5CC100F56C26 /* KZSmallVideoRecorder */ = {
+			isa = PBXGroup;
+			children = (
+				2F550F8E217F5CC100F56C26 /* KZVideoListViewController.h */,
+				2F550F8F217F5CC100F56C26 /* KZVideoConfig.m */,
+				2F550F90217F5CC100F56C26 /* KZVideoSupport.h */,
+				2F550F91217F5CC100F56C26 /* KZVideoPlayer.m */,
+				2F550F92217F5CC100F56C26 /* KZVideoViewController.m */,
+				2F550F93217F5CC100F56C26 /* KZVideoConfig.h */,
+				2F550F94217F5CC100F56C26 /* KZVideoListViewController.m */,
+				2F550F95217F5CC100F56C26 /* KZVideoSupport.m */,
+				2F550F96217F5CC100F56C26 /* KZVideoPlayer.h */,
+				2F550F97217F5CC100F56C26 /* KZVideoViewController.h */,
+			);
+			path = KZSmallVideoRecorder;
+			sourceTree = "<group>";
+		};
+		2F550F98217F5CC100F56C26 /* SDPhotoBrowser */ = {
+			isa = PBXGroup;
+			children = (
+				2F550F99217F5CC100F56C26 /* SDPhotoBrowserConfig.h */,
+				2F550F9A217F5CC100F56C26 /* SDPhotoBrowser.m */,
+				2F550F9B217F5CC100F56C26 /* SDWaitingView.m */,
+				2F550F9C217F5CC100F56C26 /* SDBrowserImageView.m */,
+				2F550F9D217F5CC100F56C26 /* SDWaitingView.h */,
+				2F550F9E217F5CC100F56C26 /* SDPhotoBrowser.h */,
+				2F550F9F217F5CC100F56C26 /* SDBrowserImageView.h */,
+			);
+			path = SDPhotoBrowser;
+			sourceTree = "<group>";
+		};
+		2F550FA0217F5CC100F56C26 /* KxMenu */ = {
+			isa = PBXGroup;
+			children = (
+				2F550FA1217F5CC100F56C26 /* KxMenu.m */,
+				2F550FA2217F5CC100F56C26 /* KxMenu.h */,
+			);
+			path = KxMenu;
+			sourceTree = "<group>";
+		};
+		2F550FA3217F5CC100F56C26 /* AFNetworking */ = {
+			isa = PBXGroup;
+			children = (
+				2F550FA4217F5CC100F56C26 /* AFSecurityPolicy.h */,
+				2F550FA5217F5CC100F56C26 /* AFNetworkReachabilityManager.h */,
+				2F550FA6217F5CC100F56C26 /* AFURLSessionManager.h */,
+				2F550FA7217F5CC100F56C26 /* AFURLRequestSerialization.h */,
+				2F550FA8217F5CC100F56C26 /* AFURLResponseSerialization.m */,
+				2F550FA9217F5CC100F56C26 /* AFHTTPSessionManager.m */,
+				2F550FAA217F5CC100F56C26 /* AFURLResponseSerialization.h */,
+				2F550FAB217F5CC100F56C26 /* AFURLSessionManager.m */,
+				2F550FAC217F5CC100F56C26 /* AFURLRequestSerialization.m */,
+				2F550FAD217F5CC100F56C26 /* AFNetworking.h */,
+				2F550FAE217F5CC100F56C26 /* AFNetworkReachabilityManager.m */,
+				2F550FAF217F5CC100F56C26 /* AFSecurityPolicy.m */,
+				2F550FB0217F5CC100F56C26 /* AFHTTPSessionManager.h */,
+			);
+			path = AFNetworking;
+			sourceTree = "<group>";
+		};
+		2F550FD5217F5CC100F56C26 /* MBProgressHUD */ = {
+			isa = PBXGroup;
+			children = (
+				2F550FD6217F5CC100F56C26 /* MBProgressHUD.m */,
+				2F550FD7217F5CC100F56C26 /* MBProgressHUD.h */,
+			);
+			path = MBProgressHUD;
+			sourceTree = "<group>";
+		};
+		2F550FD8217F5CC100F56C26 /* SDRefeshView */ = {
+			isa = PBXGroup;
+			children = (
+				2F550FD9217F5CC100F56C26 /* UIView+SDExtension.h */,
+				2F550FDA217F5CC100F56C26 /* SDRefreshFooterView.h */,
+				2F550FDB217F5CC100F56C26 /* SDRefreshView.h */,
+				2F550FDC217F5CC100F56C26 /* SDRefreshHeaderView.m */,
+				2F550FDE217F5CC100F56C26 /* UIView+SDExtension.m */,
+				2F550FDF217F5CC100F56C26 /* SDRefreshFooterView.m */,
+				2F550FE0217F5CC100F56C26 /* SDRefresh.h */,
+				2F550FE1217F5CC100F56C26 /* SDRefreshHeaderView.h */,
+				2F550FE2217F5CC100F56C26 /* SDRefreshView.m */,
+			);
+			path = SDRefeshView;
+			sourceTree = "<group>";
+		};
+		2F550FE3217F5CC100F56C26 /* UITextViewPlaceholder */ = {
+			isa = PBXGroup;
+			children = (
+				2F550FE4217F5CC100F56C26 /* UITextView+Placeholder.m */,
+				2F550FE5217F5CC100F56C26 /* UITextView+Placeholder.h */,
+			);
+			path = UITextViewPlaceholder;
+			sourceTree = "<group>";
+		};
+		2F550FEC217F5CC100F56C26 /* SDWebImage */ = {
+			isa = PBXGroup;
+			children = (
+				2F550FED217F5CC100F56C26 /* UIImage+WebP.m */,
+				2F550FEE217F5CC100F56C26 /* MKAnnotationView+WebCache.m */,
+				2F550FEF217F5CC100F56C26 /* NSImage+WebCache.h */,
+				2F550FF0217F5CC100F56C26 /* UIImageView+WebCache.h */,
+				2F550FF1217F5CC100F56C26 /* NSData+ImageContentType.h */,
+				2F550FF2217F5CC100F56C26 /* SDWebImageManager.m */,
+				2F550FF3217F5CC100F56C26 /* SDWebImageDecoder.m */,
+				2F550FF4217F5CC100F56C26 /* SDWebImageDownloaderOperation.h */,
+				2F550FF5217F5CC100F56C26 /* UIImageView+HighlightedWebCache.m */,
+				2F550FF6217F5CC100F56C26 /* SDImageCache.h */,
+				2F550FF7217F5CC100F56C26 /* SDImageCacheConfig.h */,
+				2F550FF8217F5CC100F56C26 /* FLAnimatedImage */,
+				2F551000217F5CC100F56C26 /* SDWebImageDownloader.m */,
+				2F551001217F5CC100F56C26 /* UIImage+GIF.m */,
+				2F551002217F5CC100F56C26 /* UIButton+WebCache.h */,
+				2F551003217F5CC100F56C26 /* UIImage+MultiFormat.m */,
+				2F551004217F5CC100F56C26 /* SDWebImageCompat.m */,
+				2F551005217F5CC100F56C26 /* SDWebImagePrefetcher.m */,
+				2F551006217F5CC100F56C26 /* SDWebImage.h */,
+				2F551007217F5CC100F56C26 /* UIView+WebCache.h */,
+				2F551008217F5CC100F56C26 /* UIView+WebCacheOperation.h */,
+				2F551009217F5CC100F56C26 /* MKAnnotationView+WebCache.h */,
+				2F55100A217F5CC100F56C26 /* UIImage+WebP.h */,
+				2F55100B217F5CC100F56C26 /* SDImageCache.m */,
+				2F55100C217F5CC100F56C26 /* UIImageView+HighlightedWebCache.h */,
+				2F55100D217F5CC100F56C26 /* SDWebImageDownloaderOperation.m */,
+				2F55100E217F5CC100F56C26 /* SDWebImageDecoder.h */,
+				2F55100F217F5CC100F56C26 /* SDWebImageManager.h */,
+				2F551010217F5CC100F56C26 /* NSData+ImageContentType.m */,
+				2F551011217F5CC100F56C26 /* UIImageView+WebCache.m */,
+				2F551012217F5CC100F56C26 /* SDWebImageOperation.h */,
+				2F551013217F5CC100F56C26 /* NSImage+WebCache.m */,
+				2F551014217F5CC100F56C26 /* SDWebImageDownloader.h */,
+				2F551015217F5CC100F56C26 /* SDImageCacheConfig.m */,
+				2F551016217F5CC100F56C26 /* UIView+WebCacheOperation.m */,
+				2F551017217F5CC100F56C26 /* UIView+WebCache.m */,
+				2F551018217F5CC100F56C26 /* SDWebImagePrefetcher.h */,
+				2F551019217F5CC100F56C26 /* SDWebImageCompat.h */,
+				2F55101A217F5CC100F56C26 /* UIImage+MultiFormat.h */,
+				2F55101B217F5CC100F56C26 /* UIButton+WebCache.m */,
+				2F55101C217F5CC100F56C26 /* UIImage+GIF.h */,
+			);
+			path = SDWebImage;
+			sourceTree = "<group>";
+		};
+		2F550FF8217F5CC100F56C26 /* FLAnimatedImage */ = {
+			isa = PBXGroup;
+			children = (
+				2F550FF9217F5CC100F56C26 /* FLAnimatedImageView+WebCache.m */,
+				2F550FFA217F5CC100F56C26 /* FLAnimatedImage */,
+				2F550FFF217F5CC100F56C26 /* FLAnimatedImageView+WebCache.h */,
+			);
+			path = FLAnimatedImage;
+			sourceTree = "<group>";
+		};
+		2F550FFA217F5CC100F56C26 /* FLAnimatedImage */ = {
+			isa = PBXGroup;
+			children = (
+				2F550FFB217F5CC100F56C26 /* FLAnimatedImage.m */,
+				2F550FFC217F5CC100F56C26 /* FLAnimatedImageView.m */,
+				2F550FFD217F5CC100F56C26 /* FLAnimatedImage.h */,
+				2F550FFE217F5CC100F56C26 /* FLAnimatedImageView.h */,
+			);
+			path = FLAnimatedImage;
+			sourceTree = "<group>";
+		};
+		2F55101D217F5CC100F56C26 /* TYAlertController */ = {
+			isa = PBXGroup;
+			children = (
+				2F55101E217F5CC100F56C26 /* TYAlertView.m */,
+				2F55101F217F5CC100F56C26 /* TYAlertDropDownAnimation.h */,
+				2F551020217F5CC100F56C26 /* UIView+TYAutoLayout.h */,
+				2F551021217F5CC100F56C26 /* TYShowAlertView.h */,
+				2F551022217F5CC100F56C26 /* UIView+TYAlertView.m */,
+				2F551023217F5CC100F56C26 /* TYAlertScaleFadeAnimation.m */,
+				2F551024217F5CC100F56C26 /* TYBaseAnimation.h */,
+				2F551025217F5CC100F56C26 /* TYAlertFadeAnimation.m */,
+				2F551026217F5CC100F56C26 /* TYAlertController+TransitionAnimate.m */,
+				2F551027217F5CC100F56C26 /* TYAlertController.h */,
+				2F551028217F5CC100F56C26 /* UIView+TYAutoLayout.m */,
+				2F551029217F5CC100F56C26 /* TYAlertDropDownAnimation.m */,
+				2F55102A217F5CC100F56C26 /* TYAlertView.h */,
+				2F55102B217F5CC100F56C26 /* UIView+TYAlertView.h */,
+				2F55102C217F5CC100F56C26 /* TYShowAlertView.m */,
+				2F55102D217F5CC100F56C26 /* TYBaseAnimation.m */,
+				2F55102E217F5CC100F56C26 /* TYAlertScaleFadeAnimation.h */,
+				2F55102F217F5CC100F56C26 /* TYAlertController.m */,
+				2F551030217F5CC100F56C26 /* TYAlertFadeAnimation.h */,
+			);
+			path = TYAlertController;
+			sourceTree = "<group>";
+		};
+		2F551031217F5CC100F56C26 /* YLGIFImage */ = {
+			isa = PBXGroup;
+			children = (
+				2F551032217F5CC100F56C26 /* YLGIFImage.m */,
+				2F551033217F5CC100F56C26 /* YLImageView.m */,
+				2F551034217F5CC100F56C26 /* YLGIFImage.h */,
+				2F551035217F5CC100F56C26 /* YLImageView.h */,
+			);
+			path = YLGIFImage;
+			sourceTree = "<group>";
+		};
+		2F551037217F5CC100F56C26 /* ForwardMessage */ = {
+			isa = PBXGroup;
+			children = (
+				2F551038217F5CC100F56C26 /* WFCUForwardViewController.m */,
+				2F551039217F5CC100F56C26 /* WFCUForwardMessageCell.m */,
+				2F55103A217F5CC100F56C26 /* WFCUShareMessageView.m */,
+				2F55103B217F5CC100F56C26 /* WFCUForwardViewController.h */,
+				2F55103D217F5CC100F56C26 /* WFCUShareMessageView.h */,
+				2F55103E217F5CC100F56C26 /* WFCUForwardMessageCell.h */,
+			);
+			path = ForwardMessage;
+			sourceTree = "<group>";
+		};
+		2F55103F217F5CC100F56C26 /* Category */ = {
+			isa = PBXGroup;
+			children = (
+				2F551040217F5CC100F56C26 /* TabbarButton.h */,
+				2F551041217F5CC100F56C26 /* UIImage+ERCategory.h */,
+				2F551042217F5CC100F56C26 /* AttributedLabel.h */,
+				2F551043217F5CC100F56C26 /* BubbleTipView.m */,
+				2F551044217F5CC100F56C26 /* UIView+Toast.h */,
+				2F551045217F5CC100F56C26 /* UIView+Screenshot.h */,
+				2F551046217F5CC100F56C26 /* UITabBar+badge.h */,
+				2F551047217F5CC100F56C26 /* AttributedLabel.m */,
+				2F551048217F5CC100F56C26 /* UIImage+ERCategory.m */,
+				2F551049217F5CC100F56C26 /* TabbarButton.m */,
+				2F55104A217F5CC100F56C26 /* BubbleTipView.h */,
+				2F55104B217F5CC100F56C26 /* UITabBar+badge.m */,
+				2F55104C217F5CC100F56C26 /* UIView+Screenshot.m */,
+				2F55104D217F5CC100F56C26 /* UIView+Toast.m */,
+			);
+			path = Category;
+			sourceTree = "<group>";
+		};
+		2F55104E217F5CC100F56C26 /* ConversationSetting */ = {
+			isa = PBXGroup;
+			children = (
+				2F55104F217F5CC100F56C26 /* Cell */,
+				2F551054217F5CC100F56C26 /* ViewController */,
+			);
+			path = ConversationSetting;
+			sourceTree = "<group>";
+		};
+		2F55104F217F5CC100F56C26 /* Cell */ = {
+			isa = PBXGroup;
+			children = (
+				2F551050217F5CC100F56C26 /* WFCUSwitchTableViewCell.m */,
+				2F551051217F5CC100F56C26 /* WFCUConversationSettingMemberCell.h */,
+				2F551052217F5CC100F56C26 /* WFCUSwitchTableViewCell.h */,
+				2F551053217F5CC100F56C26 /* WFCUConversationSettingMemberCell.m */,
+			);
+			path = Cell;
+			sourceTree = "<group>";
+		};
+		2F551054217F5CC100F56C26 /* ViewController */ = {
+			isa = PBXGroup;
+			children = (
+				2F551055217F5CC100F56C26 /* WFCUConversationSettingMemberCollectionViewLayout.m */,
+				2F551056217F5CC100F56C26 /* WFCUConversationSettingViewController.m */,
+				2F551057217F5CC100F56C26 /* WFCUConversationSettingViewController.h */,
+				2F551058217F5CC100F56C26 /* WFCUConversationSettingMemberCollectionViewLayout.h */,
+			);
+			path = ViewController;
+			sourceTree = "<group>";
+		};
+		2F551059217F5CC100F56C26 /* ConversationList */ = {
+			isa = PBXGroup;
+			children = (
+				2F55105A217F5CC100F56C26 /* Cell */,
+				2F55105F217F5CC100F56C26 /* SearchCell */,
+				2F551062217F5CC100F56C26 /* ViewController */,
+			);
+			path = ConversationList;
+			sourceTree = "<group>";
+		};
+		2F55105A217F5CC100F56C26 /* Cell */ = {
+			isa = PBXGroup;
+			children = (
+				2F55105B217F5CC100F56C26 /* WFCUConversationTableViewCell.h */,
+				2F55105D217F5CC100F56C26 /* WFCUConversationTableViewCell.m */,
+			);
+			path = Cell;
+			sourceTree = "<group>";
+		};
+		2F55105F217F5CC100F56C26 /* SearchCell */ = {
+			isa = PBXGroup;
+			children = (
+				2F1439F3217F5DAA00B3E38A /* WFCUSearchGroupTableViewCell.h */,
+				2F1439F4217F5DAA00B3E38A /* WFCUSearchGroupTableViewCell.m */,
+				90414AFA21AF5A93008EF915 /* WFCUConversationSearchTableViewCell.h */,
+				90414AFB21AF5A93008EF915 /* WFCUConversationSearchTableViewCell.m */,
+			);
+			path = SearchCell;
+			sourceTree = "<group>";
+		};
+		2F551062217F5CC100F56C26 /* ViewController */ = {
+			isa = PBXGroup;
+			children = (
+				2F551063217F5CC100F56C26 /* WFCUConversationTableViewController.h */,
+				2F551064217F5CC100F56C26 /* WFCUConversationTableViewController.m */,
+				2FE689A721AE9C0200DE54CC /* WFCUConversationSearchTableViewController.h */,
+				2FE689A621AE9C0100DE54CC /* WFCUConversationSearchTableViewController.m */,
+			);
+			path = ViewController;
+			sourceTree = "<group>";
+		};
+		2F551065217F5CC100F56C26 /* Contacts */ = {
+			isa = PBXGroup;
+			children = (
+				2F551066217F5CC100F56C26 /* Cell */,
+				2F55106D217F5CC100F56C26 /* ViewController */,
+			);
+			path = Contacts;
+			sourceTree = "<group>";
+		};
+		2F551066217F5CC100F56C26 /* Cell */ = {
+			isa = PBXGroup;
+			children = (
+				2F551067217F5CC100F56C26 /* WFCUNewFriendTableViewCell.m */,
+				2F551068217F5CC100F56C26 /* WFCUContactTableViewCell.m */,
+				2F551069217F5CC100F56C26 /* WFCUContactSelectTableViewCell.m */,
+				2F55106A217F5CC100F56C26 /* WFCUNewFriendTableViewCell.h */,
+				2F55106B217F5CC100F56C26 /* WFCUContactTableViewCell.h */,
+				2F55106C217F5CC100F56C26 /* WFCUContactSelectTableViewCell.h */,
+			);
+			path = Cell;
+			sourceTree = "<group>";
+		};
+		2F55106D217F5CC100F56C26 /* ViewController */ = {
+			isa = PBXGroup;
+			children = (
+				2F55106E217F5CC100F56C26 /* WFCUContactListViewController.h */,
+				2F55106F217F5CC100F56C26 /* WFCUContactListViewController.m */,
+			);
+			path = ViewController;
+			sourceTree = "<group>";
+		};
+		2F551070217F5CC100F56C26 /* AddFriend */ = {
+			isa = PBXGroup;
+			children = (
+				2F551071217F5CC100F56C26 /* ViewController */,
+			);
+			path = AddFriend;
+			sourceTree = "<group>";
+		};
+		2F551071217F5CC100F56C26 /* ViewController */ = {
+			isa = PBXGroup;
+			children = (
+				2F551072217F5CC100F56C26 /* WFCUAddFriendViewController.m */,
+				2F551073217F5CC100F56C26 /* WFCUAddFriendViewController.h */,
+				2FD2EE7E218F15B500CBA8B0 /* WFCUVerifyRequestViewController.h */,
+				2FD2EE7F218F15B500CBA8B0 /* WFCUVerifyRequestViewController.m */,
+			);
+			path = ViewController;
+			sourceTree = "<group>";
+		};
+		2F551074217F5CC100F56C26 /* Me */ = {
+			isa = PBXGroup;
+			children = (
+				2F551076217F5CC100F56C26 /* WFCUMyProfileTableViewController.h */,
+				2F55107A217F5CC100F56C26 /* WFCUMyPortraitViewController.h */,
+				2F55107B217F5CC100F56C26 /* WFCUMessageNotificationViewController.m */,
+				2F55107C217F5CC100F56C26 /* WFCUModifyMyProfileViewController.m */,
+				2F551080217F5CC100F56C26 /* WFCUMyProfileTableViewController.m */,
+				2F551082217F5CC100F56C26 /* WFCUModifyMyProfileViewController.h */,
+				2F551083217F5CC100F56C26 /* WFCUMessageNotificationViewController.h */,
+				2F551084217F5CC100F56C26 /* WFCUMyPortraitViewController.m */,
+			);
+			path = Me;
+			sourceTree = "<group>";
+		};
+		2F551085217F5CC200F56C26 /* FriendRequest */ = {
+			isa = PBXGroup;
+			children = (
+				2F551086217F5CC200F56C26 /* Cell */,
+				2F551089217F5CC200F56C26 /* ViewController */,
+			);
+			path = FriendRequest;
+			sourceTree = "<group>";
+		};
+		2F551086217F5CC200F56C26 /* Cell */ = {
+			isa = PBXGroup;
+			children = (
+				2F551087217F5CC200F56C26 /* WFCUFriendRequestTableViewCell.m */,
+				2F551088217F5CC200F56C26 /* WFCUFriendRequestTableViewCell.h */,
+			);
+			path = Cell;
+			sourceTree = "<group>";
+		};
+		2F551089217F5CC200F56C26 /* ViewController */ = {
+			isa = PBXGroup;
+			children = (
+				2F55108A217F5CC200F56C26 /* WFCUFriendRequestViewController.h */,
+				2F55108B217F5CC200F56C26 /* WFCUFriendRequestViewController.m */,
+			);
+			path = ViewController;
+			sourceTree = "<group>";
+		};
+		2F55108C217F5CC200F56C26 /* Utilities */ = {
+			isa = PBXGroup;
+			children = (
+				2F55108D217F5CC200F56C26 /* WFCUMediaMessageDownloader.h */,
+				2F55108E217F5CC200F56C26 /* WFCUUtilities.h */,
+				2F55108F217F5CC200F56C26 /* WFCUMediaMessageDownloader.m */,
+				2F551090217F5CC200F56C26 /* WFCUUtilities.m */,
+			);
+			path = Utilities;
+			sourceTree = "<group>";
+		};
+		2F9CE41921BFE5A4005E1BE1 /* Channel */ = {
+			isa = PBXGroup;
+			children = (
+				9029D0FC21C5D7930002EBAA /* WFCUCreateChannelViewController.h */,
+				9029D0FD21C5D7930002EBAA /* WFCUCreateChannelViewController.m */,
+				2F36433121C136C400904CAB /* WFCUFavChannelTableViewController.h */,
+				2F36433221C136C400904CAB /* WFCUFavChannelTableViewController.m */,
+				2F9CE41B21BFE5D9005E1BE1 /* WFCUSearchChannelViewController.h */,
+				2F9CE41A21BFE5D9005E1BE1 /* WFCUSearchChannelViewController.m */,
+				2F9CE41E21BFE63C005E1BE1 /* WFCUChannelProfileViewController.h */,
+				2F9CE41F21BFE63C005E1BE1 /* WFCUChannelProfileViewController.m */,
+				2F36433521C13C5300904CAB /* WFCUChannelTableViewCell.h */,
+				2F36433621C13C5300904CAB /* WFCUChannelTableViewCell.m */,
+			);
+			path = Channel;
+			sourceTree = "<group>";
+		};
+		901E26FF21F152B200A163CB /* AVEngine */ = {
+			isa = PBXGroup;
+			children = (
+				901E270021F152F600A163CB /* GoogleWebRTC */,
+				901E270521F152F600A163CB /* WFAVEngineKit.framework */,
+			);
+			path = AVEngine;
+			sourceTree = "<group>";
+		};
+		901E270021F152F600A163CB /* GoogleWebRTC */ = {
+			isa = PBXGroup;
+			children = (
+				901E270121F152F600A163CB /* LICENSE.md */,
+				901E270221F152F600A163CB /* Frameworks */,
+			);
+			path = GoogleWebRTC;
+			sourceTree = "<group>";
+		};
+		901E270221F152F600A163CB /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				901E270321F152F600A163CB /* frameworks */,
+			);
+			path = Frameworks;
+			sourceTree = "<group>";
+		};
+		901E270321F152F600A163CB /* frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				901E270421F152F600A163CB /* WebRTC.framework */,
+			);
+			path = frameworks;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		2F550BDA217F4D7B00F56C26 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				2F551166217F5CC200F56C26 /* AFURLRequestSerialization.h in Headers */,
+				2F551209217F5CC300F56C26 /* WFCUConversationTableViewController.h in Headers */,
+				2F551216217F5CC300F56C26 /* WFCUMyProfileTableViewController.h in Headers */,
+				2F5510AC217F5CC200F56C26 /* WFCUMessageListViewController.h in Headers */,
+				2F551222217F5CC300F56C26 /* WFCUModifyMyProfileViewController.h in Headers */,
+				2F551223217F5CC300F56C26 /* WFCUMessageNotificationViewController.h in Headers */,
+				2F49910B2189239E005F6A84 /* WFCUVideoViewController.h in Headers */,
+				2F55121A217F5CC300F56C26 /* WFCUMyPortraitViewController.h in Headers */,
+				2F49910D2189239E005F6A84 /* WFCUFloatingWindow.h in Headers */,
+				2F551211217F5CC300F56C26 /* WFCUContactListViewController.h in Headers */,
+				2F55122A217F5CC300F56C26 /* WFCUUtilities.h in Headers */,
+				2F3A6C1C219EE941009A8B4B /* WFCUStickerItem.h in Headers */,
+				2F5510B0217F5CC200F56C26 /* WFCUGroupMemberTableViewController.h in Headers */,
+				2F551100217F5CC200F56C26 /* CCHMapClusterControllerUtils.h in Headers */,
+				2F9CE42021BFE63C005E1BE1 /* WFCUChannelProfileViewController.h in Headers */,
+				2F55109E217F5CC200F56C26 /* WFCUFileCell.h in Headers */,
+				2F5510A5217F5CC200F56C26 /* WFCUCallSummaryCell.h in Headers */,
+				2F5510AA217F5CC200F56C26 /* WFCUMessageModel.h in Headers */,
+				2F55115E217F5CC200F56C26 /* SDWaitingView.h in Headers */,
+				2F551160217F5CC200F56C26 /* SDBrowserImageView.h in Headers */,
+				2F5510E4217F5CC200F56C26 /* WFCULocationPoint.h in Headers */,
+				2F5511DE217F5CC300F56C26 /* TYAlertScaleFadeAnimation.h in Headers */,
+				2F5511C0217F5CC300F56C26 /* SDWebImageManager.h in Headers */,
+				2F551164217F5CC200F56C26 /* AFNetworkReachabilityManager.h in Headers */,
+				2F55110E217F5CC200F56C26 /* VideoPlayerSampleView.h in Headers */,
+				2F3A6C1B219EE941009A8B4B /* WFCUFaceButton.h in Headers */,
+				2F5511D4217F5CC300F56C26 /* TYBaseAnimation.h in Headers */,
+				2F55110B217F5CC200F56C26 /* VideoPlayerSampleViewController.h in Headers */,
+				2F5511C3217F5CC300F56C26 /* SDWebImageOperation.h in Headers */,
+				2F5511A7217F5CC300F56C26 /* SDWebImageDownloaderOperation.h in Headers */,
+				2F5510CB217F5CC200F56C26 /* WFCUChatInputBar.h in Headers */,
+				2F5511A9217F5CC300F56C26 /* SDImageCache.h in Headers */,
+				2F551227217F5CC300F56C26 /* WFCUFriendRequestViewController.h in Headers */,
+				2F551202217F5CC300F56C26 /* WFCUConversationSettingMemberCollectionViewLayout.h in Headers */,
+				2F551125217F5CC200F56C26 /* VideoPlayer.h in Headers */,
+				2F551203217F5CC300F56C26 /* WFCUConversationTableViewCell.h in Headers */,
+				2F551196217F5CC200F56C26 /* SDRefresh.h in Headers */,
+				2F5511CA217F5CC300F56C26 /* SDWebImageCompat.h in Headers */,
+				2F5510BC217F5CC200F56C26 /* WFCUBrowserViewController.h in Headers */,
+				2F5511F1217F5CC300F56C26 /* UIView+Toast.h in Headers */,
+				2F55120F217F5CC300F56C26 /* WFCUContactTableViewCell.h in Headers */,
+				2F55120E217F5CC300F56C26 /* WFCUNewFriendTableViewCell.h in Headers */,
+				2F55109B217F5CC200F56C26 /* WFCUMessageCell.h in Headers */,
+				2F5511B3217F5CC300F56C26 /* UIButton+WebCache.h in Headers */,
+				2F5511DB217F5CC300F56C26 /* UIView+TYAlertView.h in Headers */,
+				2F551109217F5CC200F56C26 /* pinyin.h in Headers */,
+				2F551155217F5CC200F56C26 /* KZVideoConfig.h in Headers */,
+				2F1439F5217F5DAA00B3E38A /* WFCUSearchGroupTableViewCell.h in Headers */,
+				2F551191217F5CC200F56C26 /* SDRefreshView.h in Headers */,
+				2F5511A3217F5CC200F56C26 /* UIImageView+WebCache.h in Headers */,
+				2F551201217F5CC300F56C26 /* WFCUConversationSettingViewController.h in Headers */,
+				2F5511BB217F5CC300F56C26 /* UIImage+WebP.h in Headers */,
+				2F5510F5217F5CC200F56C26 /* CCHMapViewDelegateProxy.h in Headers */,
+				2F5511D0217F5CC300F56C26 /* UIView+TYAutoLayout.h in Headers */,
+				2F551169217F5CC200F56C26 /* AFURLResponseSerialization.h in Headers */,
+				2F5511C5217F5CC300F56C26 /* SDWebImageDownloader.h in Headers */,
+				2F551165217F5CC200F56C26 /* AFURLSessionManager.h in Headers */,
+				2F36433721C13C5300904CAB /* WFCUChannelTableViewCell.h in Headers */,
+				2F5511BD217F5CC300F56C26 /* UIImageView+HighlightedWebCache.h in Headers */,
+				2F9CE41D21BFE5D9005E1BE1 /* WFCUSearchChannelViewController.h in Headers */,
+				2F5511B0217F5CC300F56C26 /* FLAnimatedImageView+WebCache.h in Headers */,
+				2F5510B9217F5CC200F56C26 /* WFCUGroupTableViewCell.h in Headers */,
+				2F551152217F5CC200F56C26 /* KZVideoSupport.h in Headers */,
+				2F55118E217F5CC200F56C26 /* MBProgressHUD.h in Headers */,
+				2F5510EF217F5CC200F56C26 /* CCHMapClusterControllerDebugPolygon.h in Headers */,
+				2F5511F7217F5CC300F56C26 /* BubbleTipView.h in Headers */,
+				2F5510C5217F5CC200F56C26 /* WFCUFavGroupTableViewController.h in Headers */,
+				2F5511BA217F5CC300F56C26 /* MKAnnotationView+WebCache.h in Headers */,
+				2F55116C217F5CC200F56C26 /* AFNetworking.h in Headers */,
+				2F5511B8217F5CC300F56C26 /* UIView+WebCache.h in Headers */,
+				2F550BE4217F4D7B00F56C26 /* WFChatUIKit.h in Headers */,
+				2F5510BD217F5CC200F56C26 /* WFCUGeneralModifyViewController.h in Headers */,
+				2FE689A921AE9C0200DE54CC /* WFCUConversationSearchTableViewController.h in Headers */,
+				2F5510BE217F5CC200F56C26 /* WFCUSearchViewController.h in Headers */,
+				2F551197217F5CC200F56C26 /* SDRefreshHeaderView.h in Headers */,
+				2F551104217F5CC200F56C26 /* CCHMapClusterAnnotation.h in Headers */,
+				2F5511D1217F5CC300F56C26 /* TYShowAlertView.h in Headers */,
+				2F5511FC217F5CC300F56C26 /* WFCUConversationSettingMemberCell.h in Headers */,
+				2F551226217F5CC300F56C26 /* WFCUFriendRequestTableViewCell.h in Headers */,
+				2F5510FD217F5CC200F56C26 /* CCHMapClusterController.h in Headers */,
+				2F551096217F5CC200F56C26 /* WFCUImageCell.h in Headers */,
+				2F5510AF217F5CC200F56C26 /* WFCUInviteGroupMemberViewController.h in Headers */,
+				2F5511EB217F5CC300F56C26 /* WFCUShareMessageView.h in Headers */,
+				2F5511A2217F5CC200F56C26 /* NSImage+WebCache.h in Headers */,
+				2F5510B2217F5CC200F56C26 /* WFCUImagePreviewViewController.h in Headers */,
+				2F5510EA217F5CC200F56C26 /* WFCUEmotionTextAttachment.h in Headers */,
+				2F5510C8217F5CC200F56C26 /* WFCUPluginItemView.h in Headers */,
+				2F5511AA217F5CC300F56C26 /* SDImageCacheConfig.h in Headers */,
+				2F36433321C136C400904CAB /* WFCUFavChannelTableViewController.h in Headers */,
+				2F5510CD217F5CC200F56C26 /* WFCUSelectedFileCollectionViewCell.h in Headers */,
+				2F5511EE217F5CC300F56C26 /* UIImage+ERCategory.h in Headers */,
+				2F5511AE217F5CC300F56C26 /* FLAnimatedImage.h in Headers */,
+				2F551190217F5CC200F56C26 /* SDRefreshFooterView.h in Headers */,
+				2F5511DA217F5CC300F56C26 /* TYAlertView.h in Headers */,
+				2F551092217F5CC200F56C26 /* WFCULocationCell.h in Headers */,
+				2F5511EF217F5CC300F56C26 /* AttributedLabel.h in Headers */,
+				2F5511ED217F5CC300F56C26 /* TabbarButton.h in Headers */,
+				2F5510CA217F5CC200F56C26 /* WFCUPluginBoardView.h in Headers */,
+				2F5510FF217F5CC200F56C26 /* CCHMapTree.h in Headers */,
+				2F5510A2217F5CC200F56C26 /* WFCUVoiceCell.h in Headers */,
+				2F551210217F5CC300F56C26 /* WFCUContactSelectTableViewCell.h in Headers */,
+				2F5511E0217F5CC300F56C26 /* TYAlertFadeAnimation.h in Headers */,
+				2F5511E4217F5CC300F56C26 /* YLImageView.h in Headers */,
+				2F5511C9217F5CC300F56C26 /* SDWebImagePrefetcher.h in Headers */,
+				2F551214217F5CC300F56C26 /* WFCUAddFriendViewController.h in Headers */,
+				2F551110217F5CC200F56C26 /* VideoPlayerKit.h in Headers */,
+				2F5511E9217F5CC300F56C26 /* WFCUForwardViewController.h in Headers */,
+				2F551229217F5CC300F56C26 /* WFCUMediaMessageDownloader.h in Headers */,
+				2F5511D7217F5CC300F56C26 /* TYAlertController.h in Headers */,
+				2F5510F4217F5CC200F56C26 /* CCHCenterOfMassMapClusterer.h in Headers */,
+				2F5510F6217F5CC200F56C26 /* CCHMapAnimator.h in Headers */,
+				2F5511AF217F5CC300F56C26 /* FLAnimatedImageView.h in Headers */,
+				2F5511A4217F5CC300F56C26 /* NSData+ImageContentType.h in Headers */,
+				2F5511CF217F5CC300F56C26 /* TYAlertDropDownAnimation.h in Headers */,
+				2F5510B7217F5CC200F56C26 /* WFCUGroupMemberTableViewCell.h in Headers */,
+				2F551159217F5CC200F56C26 /* KZVideoViewController.h in Headers */,
+				2F5510F8217F5CC200F56C26 /* CCHFadeInOutMapAnimator.h in Headers */,
+				2F5510CC217F5CC200F56C26 /* WFCUVoiceRecordView.h in Headers */,
+				2F551111217F5CC200F56C26 /* VideoPlayerView.h in Headers */,
+				9029D0FE21C5D7930002EBAA /* WFCUCreateChannelViewController.h in Headers */,
+				2F55109C217F5CC200F56C26 /* WFCUStickerCell.h in Headers */,
+				2F44A3A72180B48F00E74EA4 /* WFCUMentionUserTableViewController.h in Headers */,
+				2F5511EC217F5CC300F56C26 /* WFCUForwardMessageCell.h in Headers */,
+				2F551150217F5CC200F56C26 /* KZVideoListViewController.h in Headers */,
+				2F5510AD217F5CC200F56C26 /* WFCUProfileTableViewController.h in Headers */,
+				2F5510E9217F5CC200F56C26 /* WFCUSelectFileViewController.h in Headers */,
+				2F55118F217F5CC200F56C26 /* UIView+SDExtension.h in Headers */,
+				2F5510A4217F5CC200F56C26 /* WFCUInformationCell.h in Headers */,
+				2F5511E3217F5CC300F56C26 /* YLGIFImage.h in Headers */,
+				2F337EE6219EE1840086B0F3 /* WFCUTextCell.h in Headers */,
+				2F5511B7217F5CC300F56C26 /* SDWebImage.h in Headers */,
+				2F551114217F5CC200F56C26 /* AirplayActiveView.h in Headers */,
+				2F5511FD217F5CC300F56C26 /* WFCUSwitchTableViewCell.h in Headers */,
+				2F551101217F5CC200F56C26 /* CCHMapClusterOperation.h in Headers */,
+				2FD2EE80218F15B500CBA8B0 /* WFCUVerifyRequestViewController.h in Headers */,
+				2F5510C0217F5CC200F56C26 /* WFCUCreateGroupViewController.h in Headers */,
+				2F5511E5217F5CC300F56C26 /* Predefine.h in Headers */,
+				2F55109D217F5CC200F56C26 /* WFCUMediaMessageCell.h in Headers */,
+				2F5510FE217F5CC200F56C26 /* CCHMapClusterer.h in Headers */,
+				2F5510F9217F5CC200F56C26 /* CCHNearCenterMapClusterer.h in Headers */,
+				2F55119A217F5CC200F56C26 /* UITextView+Placeholder.h in Headers */,
+				2F551158217F5CC200F56C26 /* KZVideoPlayer.h in Headers */,
+				2F551098217F5CC200F56C26 /* WFCUMessageCellBase.h in Headers */,
+				2F5511CB217F5CC300F56C26 /* UIImage+MultiFormat.h in Headers */,
+				2F55115F217F5CC200F56C26 /* SDPhotoBrowser.h in Headers */,
+				2F5511CD217F5CC300F56C26 /* UIImage+GIF.h in Headers */,
+				2F5510FB217F5CC200F56C26 /* CCHMapClusterControllerDelegate.h in Headers */,
+				2F5510FC217F5CC200F56C26 /* CCHMapTreeUtils.h in Headers */,
+				2F5511F3217F5CC300F56C26 /* UITabBar+badge.h in Headers */,
+				2F551163217F5CC200F56C26 /* AFSecurityPolicy.h in Headers */,
+				2F5511F2217F5CC300F56C26 /* UIView+Screenshot.h in Headers */,
+				2F551162217F5CC200F56C26 /* KxMenu.h in Headers */,
+				2F5511B9217F5CC300F56C26 /* UIView+WebCacheOperation.h in Headers */,
+				2F5510E6217F5CC200F56C26 /* WFCULocationViewController.h in Headers */,
+				2F55110F217F5CC200F56C26 /* FullScreenViewController.h in Headers */,
+				2F3A6C19219EE941009A8B4B /* WFCUFaceBoard.h in Headers */,
+				2F5511BF217F5CC300F56C26 /* SDWebImageDecoder.h in Headers */,
+				2F55116F217F5CC200F56C26 /* AFHTTPSessionManager.h in Headers */,
+				2F5510A8217F5CC200F56C26 /* WFCUVideoCell.h in Headers */,
+				90414AFC21AF5A93008EF915 /* WFCUConversationSearchTableViewCell.h in Headers */,
+				2F55115A217F5CC200F56C26 /* SDPhotoBrowserConfig.h in Headers */,
+				2F55110C217F5CC200F56C26 /* FullScreenView.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+		2F550BDE217F4D7B00F56C26 /* WFChatUIKit */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 2F550BE7217F4D7B00F56C26 /* Build configuration list for PBXNativeTarget "WFChatUIKit" */;
+			buildPhases = (
+				2F550BDA217F4D7B00F56C26 /* Headers */,
+				2F550BDB217F4D7B00F56C26 /* Sources */,
+				2F550BDC217F4D7B00F56C26 /* Frameworks */,
+				2F550BDD217F4D7B00F56C26 /* Resources */,
+				2F550BF6217F502600F56C26 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = WFChatUIKit;
+			productName = WFChatUIKit;
+			productReference = 2F550BDF217F4D7B00F56C26 /* WFChatUIKit.framework */;
+			productType = "com.apple.product-type.framework";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		2F550BD6217F4D7B00F56C26 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 1000;
+				ORGANIZATIONNAME = "Tom Lee";
+				TargetAttributes = {
+					2F550BDE217F4D7B00F56C26 = {
+						CreatedOnToolsVersion = 10.0;
+					};
+				};
+			};
+			buildConfigurationList = 2F550BD9217F4D7B00F56C26 /* Build configuration list for PBXProject "WFChatUIKit" */;
+			compatibilityVersion = "Xcode 9.3";
+			developmentRegion = en;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 2F550BD5217F4D7B00F56C26;
+			productRefGroup = 2F550BE0217F4D7B00F56C26 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				2F550BDE217F4D7B00F56C26 /* WFChatUIKit */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		2F550BDD217F4D7B00F56C26 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				901E270621F152F600A163CB /* LICENSE.md in Resources */,
+				2F143A6B217F7D4100B3E38A /* Stickers.bundle in Resources */,
+				2F143A83217F86EF00B3E38A /* WFChatUIKit.xcassets in Resources */,
+				2F143A6C217F7D4100B3E38A /* Emoj.plist in Resources */,
+				2F5511EA217F5CC300F56C26 /* WFCUShareMessageView.xib in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		2F550BF6217F502600F56C26 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 12;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+			);
+			outputFileListPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "bash xcodescript.sh\n";
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		2F550BDB217F4D7B00F56C26 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				2F551105217F5CC200F56C26 /* CCHMapViewDelegateProxy.m in Sources */,
+				2F551224217F5CC300F56C26 /* WFCUMyPortraitViewController.m in Sources */,
+				2F5511F9217F5CC300F56C26 /* UIView+Screenshot.m in Sources */,
+				2F55116D217F5CC200F56C26 /* AFNetworkReachabilityManager.m in Sources */,
+				2F5510EB217F5CC200F56C26 /* WFCUSelectedFileCollectionViewCell.m in Sources */,
+				2F5510EC217F5CC200F56C26 /* WFCUVoiceRecordView.m in Sources */,
+				2F551127217F5CC200F56C26 /* VideoPlayerKit.m in Sources */,
+				2F551102217F5CC200F56C26 /* CCHNearCenterMapClusterer.m in Sources */,
+				2F5511D8217F5CC300F56C26 /* UIView+TYAutoLayout.m in Sources */,
+				2F551099217F5CC200F56C26 /* WFCUTextCell.m in Sources */,
+				2FE689A821AE9C0200DE54CC /* WFCUConversationSearchTableViewController.m in Sources */,
+				2F5510B8217F5CC200F56C26 /* WFCUImagePreviewViewController.m in Sources */,
+				2F5510C6217F5CC200F56C26 /* WFCUFavGroupTableViewController.m in Sources */,
+				2F5510A3217F5CC200F56C26 /* WFCUImageCell.m in Sources */,
+				2F5510B5217F5CC200F56C26 /* WFCUBrowserViewController.m in Sources */,
+				2F551199217F5CC200F56C26 /* UITextView+Placeholder.m in Sources */,
+				2F5511A6217F5CC300F56C26 /* SDWebImageDecoder.m in Sources */,
+				2F5511C6217F5CC300F56C26 /* SDImageCacheConfig.m in Sources */,
+				2F5510B6217F5CC200F56C26 /* WFCUProfileTableViewController.m in Sources */,
+				2F551198217F5CC200F56C26 /* SDRefreshView.m in Sources */,
+				2F5511AD217F5CC300F56C26 /* FLAnimatedImageView.m in Sources */,
+				2F551157217F5CC200F56C26 /* KZVideoSupport.m in Sources */,
+				2F5510F1217F5CC200F56C26 /* CCHMapClusterController.m in Sources */,
+				2F551213217F5CC300F56C26 /* WFCUAddFriendViewController.m in Sources */,
+				2F5511B4217F5CC300F56C26 /* UIImage+MultiFormat.m in Sources */,
+				2F55110D217F5CC200F56C26 /* AirplayActiveView.m in Sources */,
+				2F5511D3217F5CC300F56C26 /* TYAlertScaleFadeAnimation.m in Sources */,
+				2F5511E2217F5CC300F56C26 /* YLImageView.m in Sources */,
+				2F55115B217F5CC200F56C26 /* SDPhotoBrowser.m in Sources */,
+				2F5511E8217F5CC300F56C26 /* WFCUShareMessageView.m in Sources */,
+				2F55121B217F5CC300F56C26 /* WFCUMessageNotificationViewController.m in Sources */,
+				2F5511C4217F5CC300F56C26 /* NSImage+WebCache.m in Sources */,
+				2F49910A2189239E005F6A84 /* WFCUFloatingWindow.m in Sources */,
+				2F55120A217F5CC300F56C26 /* WFCUConversationTableViewController.m in Sources */,
+				2F551167217F5CC200F56C26 /* AFURLResponseSerialization.m in Sources */,
+				2F551112217F5CC200F56C26 /* VideoPlayerSampleViewController.m in Sources */,
+				2F551115217F5CC200F56C26 /* FullScreenView.m in Sources */,
+				2F5510AE217F5CC200F56C26 /* WFCUGroupMemberTableViewCell.m in Sources */,
+				2F5511C2217F5CC300F56C26 /* UIImageView+WebCache.m in Sources */,
+				2F55116A217F5CC200F56C26 /* AFURLSessionManager.m in Sources */,
+				2F5511D5217F5CC300F56C26 /* TYAlertFadeAnimation.m in Sources */,
+				2F5511C7217F5CC300F56C26 /* UIView+WebCacheOperation.m in Sources */,
+				2F551195217F5CC200F56C26 /* SDRefreshFooterView.m in Sources */,
+				2F5510E3217F5CC200F56C26 /* WFCUEmotionTextAttachment.m in Sources */,
+				2F5511AB217F5CC300F56C26 /* FLAnimatedImageView+WebCache.m in Sources */,
+				2F5510F2217F5CC200F56C26 /* CCHMapClusterControllerUtils.m in Sources */,
+				2F55109A217F5CC200F56C26 /* WFCUVideoCell.m in Sources */,
+				2F5510ED217F5CC200F56C26 /* WFCULocationPoint.m in Sources */,
+				2F551205217F5CC300F56C26 /* WFCUConversationTableViewCell.m in Sources */,
+				2F55109F217F5CC200F56C26 /* WFCULocationCell.m in Sources */,
+				2F5511E1217F5CC300F56C26 /* YLGIFImage.m in Sources */,
+				2F5511F4217F5CC300F56C26 /* AttributedLabel.m in Sources */,
+				2F551156217F5CC200F56C26 /* KZVideoListViewController.m in Sources */,
+				2F551154217F5CC200F56C26 /* KZVideoViewController.m in Sources */,
+				2F55120B217F5CC300F56C26 /* WFCUNewFriendTableViewCell.m in Sources */,
+				2F5510B3217F5CC200F56C26 /* WFCUSearchViewController.m in Sources */,
+				2F551097217F5CC200F56C26 /* WFCUVoiceCell.m in Sources */,
+				2F551091217F5CC200F56C26 /* WFCUMediaMessageCell.m in Sources */,
+				2F5511FA217F5CC300F56C26 /* UIView+Toast.m in Sources */,
+				2F5510AB217F5CC200F56C26 /* WFCUMessageListViewController.m in Sources */,
+				2F551126217F5CC200F56C26 /* VideoPlayerView.m in Sources */,
+				2F5511F6217F5CC300F56C26 /* TabbarButton.m in Sources */,
+				2F5510BB217F5CC200F56C26 /* WFCUInviteGroupMemberViewController.m in Sources */,
+				2F551228217F5CC300F56C26 /* WFCUFriendRequestViewController.m in Sources */,
+				2F5511D9217F5CC300F56C26 /* TYAlertDropDownAnimation.m in Sources */,
+				2F55116B217F5CC200F56C26 /* AFURLRequestSerialization.m in Sources */,
+				2F5511A5217F5CC300F56C26 /* SDWebImageManager.m in Sources */,
+				2F9CE42121BFE63C005E1BE1 /* WFCUChannelProfileViewController.m in Sources */,
+				2F5511F8217F5CC300F56C26 /* UITabBar+badge.m in Sources */,
+				2F5511F5217F5CC300F56C26 /* UIImage+ERCategory.m in Sources */,
+				2F5511A0217F5CC200F56C26 /* UIImage+WebP.m in Sources */,
+				2F551192217F5CC200F56C26 /* SDRefreshHeaderView.m in Sources */,
+				2F5511CC217F5CC300F56C26 /* UIButton+WebCache.m in Sources */,
+				2F551113217F5CC200F56C26 /* VideoPlayerSampleView.m in Sources */,
+				2F5511BE217F5CC300F56C26 /* SDWebImageDownloaderOperation.m in Sources */,
+				2F9CE41C21BFE5D9005E1BE1 /* WFCUSearchChannelViewController.m in Sources */,
+				2F5510B4217F5CC200F56C26 /* WFCUGeneralModifyViewController.m in Sources */,
+				2F5510A1217F5CC200F56C26 /* WFCUMessageCellBase.m in Sources */,
+				2F551106217F5CC200F56C26 /* CCHCenterOfMassMapClusterer.m in Sources */,
+				2F5511AC217F5CC300F56C26 /* FLAnimatedImage.m in Sources */,
+				2F44A3A82180B48F00E74EA4 /* WFCUMentionUserTableViewController.m in Sources */,
+				2F551153217F5CC200F56C26 /* KZVideoPlayer.m in Sources */,
+				2F5511A8217F5CC300F56C26 /* UIImageView+HighlightedWebCache.m in Sources */,
+				2F551225217F5CC300F56C26 /* WFCUFriendRequestTableViewCell.m in Sources */,
+				2F5510FA217F5CC200F56C26 /* CCHMapClusterControllerDebugPolygon.m in Sources */,
+				2F551094217F5CC200F56C26 /* WFCUCallSummaryCell.m in Sources */,
+				2F5510EE217F5CC200F56C26 /* CCHMapTreeUtils.m in Sources */,
+				2F5510A9217F5CC200F56C26 /* WFCUMessageModel.m in Sources */,
+				2F551194217F5CC200F56C26 /* UIView+SDExtension.m in Sources */,
+				2F5510BA217F5CC200F56C26 /* WFCUGroupMemberTableViewController.m in Sources */,
+				2F3A6C1D219EE941009A8B4B /* WFCUStickerItem.m in Sources */,
+				2F5511DD217F5CC300F56C26 /* TYBaseAnimation.m in Sources */,
+				2F5511B6217F5CC300F56C26 /* SDWebImagePrefetcher.m in Sources */,
+				2F5510A6217F5CC200F56C26 /* WFCUStickerCell.m in Sources */,
+				2F5511C8217F5CC300F56C26 /* UIView+WebCache.m in Sources */,
+				2F551103217F5CC200F56C26 /* CCHFadeInOutMapAnimator.m in Sources */,
+				2F551168217F5CC200F56C26 /* AFHTTPSessionManager.m in Sources */,
+				2F5510A7217F5CC200F56C26 /* WFCUMessageCell.m in Sources */,
+				2F5511A1217F5CC200F56C26 /* MKAnnotationView+WebCache.m in Sources */,
+				2F5510F0217F5CC200F56C26 /* CCHMapTree.m in Sources */,
+				2F551161217F5CC200F56C26 /* KxMenu.m in Sources */,
+				2F551124217F5CC200F56C26 /* FullScreenViewController.m in Sources */,
+				2F5510E5217F5CC200F56C26 /* WFCUPluginItemView.m in Sources */,
+				2F1439F6217F5DAA00B3E38A /* WFCUSearchGroupTableViewCell.m in Sources */,
+				2F55122B217F5CC300F56C26 /* WFCUMediaMessageDownloader.m in Sources */,
+				2F5510E8217F5CC200F56C26 /* WFCUPluginBoardView.m in Sources */,
+				2F55115D217F5CC200F56C26 /* SDBrowserImageView.m in Sources */,
+				2F551095217F5CC200F56C26 /* WFCUInformationCell.m in Sources */,
+				2FD2EE81218F15B500CBA8B0 /* WFCUVerifyRequestViewController.m in Sources */,
+				2F55118D217F5CC200F56C26 /* MBProgressHUD.m in Sources */,
+				2F55122C217F5CC300F56C26 /* WFCUUtilities.m in Sources */,
+				2F5511CE217F5CC300F56C26 /* TYAlertView.m in Sources */,
+				2F36433421C136C400904CAB /* WFCUFavChannelTableViewController.m in Sources */,
+				2F551220217F5CC300F56C26 /* WFCUMyProfileTableViewController.m in Sources */,
+				2F5510C9217F5CC200F56C26 /* WFCUSelectFileViewController.m in Sources */,
+				2F55120C217F5CC300F56C26 /* WFCUContactTableViewCell.m in Sources */,
+				2F5511FF217F5CC300F56C26 /* WFCUConversationSettingMemberCollectionViewLayout.m in Sources */,
+				2F55116E217F5CC200F56C26 /* AFSecurityPolicy.m in Sources */,
+				2F55120D217F5CC300F56C26 /* WFCUContactSelectTableViewCell.m in Sources */,
+				2F3A6C1A219EE941009A8B4B /* WFCUFaceButton.m in Sources */,
+				2F5510E7217F5CC200F56C26 /* WFCUChatInputBar.m in Sources */,
+				2F5511B5217F5CC300F56C26 /* SDWebImageCompat.m in Sources */,
+				2F551212217F5CC300F56C26 /* WFCUContactListViewController.m in Sources */,
+				2F5511D6217F5CC300F56C26 /* TYAlertController+TransitionAnimate.m in Sources */,
+				2F5511D2217F5CC300F56C26 /* UIView+TYAlertView.m in Sources */,
+				2F5511E7217F5CC300F56C26 /* WFCUForwardMessageCell.m in Sources */,
+				2F5510C7217F5CC200F56C26 /* WFCULocationViewController.m in Sources */,
+				2F5511B2217F5CC300F56C26 /* UIImage+GIF.m in Sources */,
+				2F5511DC217F5CC300F56C26 /* TYShowAlertView.m in Sources */,
+				2F55110A217F5CC200F56C26 /* pinyin.c in Sources */,
+				2F5511FE217F5CC300F56C26 /* WFCUConversationSettingMemberCell.m in Sources */,
+				90414AFD21AF5A93008EF915 /* WFCUConversationSearchTableViewCell.m in Sources */,
+				2F551093217F5CC200F56C26 /* WFCUFileCell.m in Sources */,
+				2F5510BF217F5CC200F56C26 /* WFCUCreateGroupViewController.m in Sources */,
+				2F3A6C18219EE941009A8B4B /* WFCUFaceBoard.m in Sources */,
+				9029D0FF21C5D7930002EBAA /* WFCUCreateChannelViewController.m in Sources */,
+				2F49910C2189239E005F6A84 /* WFCUVideoViewController.m in Sources */,
+				2F55121C217F5CC300F56C26 /* WFCUModifyMyProfileViewController.m in Sources */,
+				2F5510F7217F5CC200F56C26 /* CCHMapClusterAnnotation.m in Sources */,
+				2F5511E6217F5CC300F56C26 /* WFCUForwardViewController.m in Sources */,
+				2F5511C1217F5CC300F56C26 /* NSData+ImageContentType.m in Sources */,
+				2F5511BC217F5CC300F56C26 /* SDImageCache.m in Sources */,
+				2F5511FB217F5CC300F56C26 /* WFCUSwitchTableViewCell.m in Sources */,
+				2F5511B1217F5CC300F56C26 /* SDWebImageDownloader.m in Sources */,
+				2F5511DF217F5CC300F56C26 /* TYAlertController.m in Sources */,
+				2F551200217F5CC300F56C26 /* WFCUConversationSettingViewController.m in Sources */,
+				2F5510B1217F5CC200F56C26 /* WFCUGroupTableViewCell.m in Sources */,
+				2F55115C217F5CC200F56C26 /* SDWaitingView.m in Sources */,
+				2F36433821C13C5300904CAB /* WFCUChannelTableViewCell.m in Sources */,
+				2F551151217F5CC200F56C26 /* KZVideoConfig.m in Sources */,
+				2F5510F3217F5CC200F56C26 /* CCHMapClusterOperation.m in Sources */,
+				2F5511F0217F5CC300F56C26 /* BubbleTipView.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		2F550BE5217F4D7B00F56C26 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				CURRENT_PROJECT_VERSION = 1;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+				MTL_FAST_MATH = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				VERSIONING_SYSTEM = "apple-generic";
+				VERSION_INFO_PREFIX = "";
+			};
+			name = Debug;
+		};
+		2F550BE6217F4D7B00F56C26 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				CURRENT_PROJECT_VERSION = 1;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				MTL_FAST_MATH = YES;
+				SDKROOT = iphoneos;
+				VALIDATE_PRODUCT = YES;
+				VERSIONING_SYSTEM = "apple-generic";
+				VERSION_INFO_PREFIX = "";
+			};
+			name = Release;
+		};
+		2F550BE8217F4D7B00F56C26 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_IDENTITY = "";
+				CODE_SIGN_STYLE = Automatic;
+				DEFINES_MODULE = YES;
+				DEVELOPMENT_TEAM = "";
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				DYLIB_INSTALL_NAME_BASE = "@rpath";
+				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Frameworks",
+					"$(PROJECT_DIR)/Frameworks/GoogleWebRTC/Frameworks/frameworks",
+					"$(PROJECT_DIR)/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks",
+					"$(PROJECT_DIR)/WFChatUIKit/AVEngine",
+				);
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SRCROOT)/WFChatUIKit/Predefine.h";
+				INFOPLIST_FILE = WFChatUIKit/Info.plist;
+				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_BUNDLE_IDENTIFIER = cn.wildfirechat.WFChatUIKit;
+				PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+				SKIP_INSTALL = YES;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		2F550BE9217F4D7B00F56C26 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_IDENTITY = "";
+				CODE_SIGN_STYLE = Automatic;
+				DEFINES_MODULE = YES;
+				DEVELOPMENT_TEAM = "";
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				DYLIB_INSTALL_NAME_BASE = "@rpath";
+				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Frameworks",
+					"$(PROJECT_DIR)/Frameworks/GoogleWebRTC/Frameworks/frameworks",
+					"$(PROJECT_DIR)/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks",
+					"$(PROJECT_DIR)/WFChatUIKit/AVEngine",
+				);
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SRCROOT)/WFChatUIKit/Predefine.h";
+				INFOPLIST_FILE = WFChatUIKit/Info.plist;
+				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_BUNDLE_IDENTIFIER = cn.wildfirechat.WFChatUIKit;
+				PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+				SKIP_INSTALL = YES;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		2F550BD9217F4D7B00F56C26 /* Build configuration list for PBXProject "WFChatUIKit" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				2F550BE5217F4D7B00F56C26 /* Debug */,
+				2F550BE6217F4D7B00F56C26 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		2F550BE7217F4D7B00F56C26 /* Build configuration list for PBXNativeTarget "WFChatUIKit" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				2F550BE8217F4D7B00F56C26 /* Debug */,
+				2F550BE9217F4D7B00F56C26 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 2F550BD6217F4D7B00F56C26 /* Project object */;
+}

+ 7 - 0
wfuikit/WFChatUIKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:">
+   </FileRef>
+</Workspace>

+ 8 - 0
wfuikit/WFChatUIKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>

BIN
wfuikit/WFChatUIKit.xcodeproj/project.xcworkspace/xcuserdata/tomlee.xcuserdatad/UserInterfaceState.xcuserstate


+ 80 - 0
wfuikit/WFChatUIKit.xcodeproj/xcshareddata/xcschemes/WFChatUIKit.xcscheme

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "1010"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "2F550BDE217F4D7B00F56C26"
+               BuildableName = "WFChatUIKit.framework"
+               BlueprintName = "WFChatUIKit"
+               ReferencedContainer = "container:WFChatUIKit.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <Testables>
+      </Testables>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "2F550BDE217F4D7B00F56C26"
+            BuildableName = "WFChatUIKit.framework"
+            BlueprintName = "WFChatUIKit"
+            ReferencedContainer = "container:WFChatUIKit.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "2F550BDE217F4D7B00F56C26"
+            BuildableName = "WFChatUIKit.framework"
+            BlueprintName = "WFChatUIKit"
+            ReferencedContainer = "container:WFChatUIKit.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>

+ 249 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCAudioSession.h

@@ -0,0 +1,249 @@
+/*
+ *  Copyright 2016 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+extern NSString *const kRTCAudioSessionErrorDomain;
+/** Method that requires lock was called without lock. */
+extern NSInteger const kRTCAudioSessionErrorLockRequired;
+/** Unknown configuration error occurred. */
+extern NSInteger const kRTCAudioSessionErrorConfiguration;
+
+@class RTCAudioSession;
+@class RTCAudioSessionConfiguration;
+
+// Surfaces AVAudioSession events. WebRTC will listen directly for notifications
+// from AVAudioSession and handle them before calling these delegate methods,
+// at which point applications can perform additional processing if required.
+RTC_EXPORT
+@protocol RTCAudioSessionDelegate <NSObject>
+
+@optional
+/** Called on a system notification thread when AVAudioSession starts an
+ *  interruption event.
+ */
+- (void)audioSessionDidBeginInterruption:(RTCAudioSession *)session;
+
+/** Called on a system notification thread when AVAudioSession ends an
+ *  interruption event.
+ */
+- (void)audioSessionDidEndInterruption:(RTCAudioSession *)session
+                   shouldResumeSession:(BOOL)shouldResumeSession;
+
+/** Called on a system notification thread when AVAudioSession changes the
+ *  route.
+ */
+- (void)audioSessionDidChangeRoute:(RTCAudioSession *)session
+                            reason:(AVAudioSessionRouteChangeReason)reason
+                     previousRoute:(AVAudioSessionRouteDescription *)previousRoute;
+
+/** Called on a system notification thread when AVAudioSession media server
+ *  terminates.
+ */
+- (void)audioSessionMediaServerTerminated:(RTCAudioSession *)session;
+
+/** Called on a system notification thread when AVAudioSession media server
+ *  restarts.
+ */
+- (void)audioSessionMediaServerReset:(RTCAudioSession *)session;
+
+// TODO(tkchin): Maybe handle SilenceSecondaryAudioHintNotification.
+
+- (void)audioSession:(RTCAudioSession *)session didChangeCanPlayOrRecord:(BOOL)canPlayOrRecord;
+
+/** Called on a WebRTC thread when the audio device is notified to begin
+ *  playback or recording.
+ */
+- (void)audioSessionDidStartPlayOrRecord:(RTCAudioSession *)session;
+
+/** Called on a WebRTC thread when the audio device is notified to stop
+ *  playback or recording.
+ */
+- (void)audioSessionDidStopPlayOrRecord:(RTCAudioSession *)session;
+
+/** Called when the AVAudioSession output volume value changes. */
+- (void)audioSession:(RTCAudioSession *)audioSession didChangeOutputVolume:(float)outputVolume;
+
+/** Called when the audio device detects a playout glitch. The argument is the
+ *  number of glitches detected so far in the current audio playout session.
+ */
+- (void)audioSession:(RTCAudioSession *)audioSession
+    didDetectPlayoutGlitch:(int64_t)totalNumberOfGlitches;
+
+/** Called when the audio session is about to change the active state.
+ */
+- (void)audioSession:(RTCAudioSession *)audioSession willSetActive:(BOOL)active;
+
+/** Called after the audio session sucessfully changed the active state.
+ */
+- (void)audioSession:(RTCAudioSession *)audioSession didSetActive:(BOOL)active;
+
+/** Called after the audio session failed to change the active state.
+ */
+- (void)audioSession:(RTCAudioSession *)audioSession
+    failedToSetActive:(BOOL)active
+                error:(NSError *)error;
+
+@end
+
+/** This is a protocol used to inform RTCAudioSession when the audio session
+ *  activation state has changed outside of RTCAudioSession. The current known use
+ *  case of this is when CallKit activates the audio session for the application
+ */
+RTC_EXPORT
+@protocol RTCAudioSessionActivationDelegate <NSObject>
+
+/** Called when the audio session is activated outside of the app by iOS. */
+- (void)audioSessionDidActivate:(AVAudioSession *)session;
+
+/** Called when the audio session is deactivated outside of the app by iOS. */
+- (void)audioSessionDidDeactivate:(AVAudioSession *)session;
+
+@end
+
+/** Proxy class for AVAudioSession that adds a locking mechanism similar to
+ *  AVCaptureDevice. This is used to that interleaving configurations between
+ *  WebRTC and the application layer are avoided.
+ *
+ *  RTCAudioSession also coordinates activation so that the audio session is
+ *  activated only once. See |setActive:error:|.
+ */
+RTC_EXPORT
+@interface RTCAudioSession : NSObject <RTCAudioSessionActivationDelegate>
+
+/** Convenience property to access the AVAudioSession singleton. Callers should
+ *  not call setters on AVAudioSession directly, but other method invocations
+ *  are fine.
+ */
+@property(nonatomic, readonly) AVAudioSession *session;
+
+/** Our best guess at whether the session is active based on results of calls to
+ *  AVAudioSession.
+ */
+@property(nonatomic, readonly) BOOL isActive;
+/** Whether RTCAudioSession is currently locked for configuration. */
+@property(nonatomic, readonly) BOOL isLocked;
+
+/** If YES, WebRTC will not initialize the audio unit automatically when an
+ *  audio track is ready for playout or recording. Instead, applications should
+ *  call setIsAudioEnabled. If NO, WebRTC will initialize the audio unit
+ *  as soon as an audio track is ready for playout or recording.
+ */
+@property(nonatomic, assign) BOOL useManualAudio;
+
+/** This property is only effective if useManualAudio is YES.
+ *  Represents permission for WebRTC to initialize the VoIP audio unit.
+ *  When set to NO, if the VoIP audio unit used by WebRTC is active, it will be
+ *  stopped and uninitialized. This will stop incoming and outgoing audio.
+ *  When set to YES, WebRTC will initialize and start the audio unit when it is
+ *  needed (e.g. due to establishing an audio connection).
+ *  This property was introduced to work around an issue where if an AVPlayer is
+ *  playing audio while the VoIP audio unit is initialized, its audio would be
+ *  either cut off completely or played at a reduced volume. By preventing
+ *  the audio unit from being initialized until after the audio has completed,
+ *  we are able to prevent the abrupt cutoff.
+ */
+@property(nonatomic, assign) BOOL isAudioEnabled;
+
+// Proxy properties.
+@property(readonly) NSString *category;
+@property(readonly) AVAudioSessionCategoryOptions categoryOptions;
+@property(readonly) NSString *mode;
+@property(readonly) BOOL secondaryAudioShouldBeSilencedHint;
+@property(readonly) AVAudioSessionRouteDescription *currentRoute;
+@property(readonly) NSInteger maximumInputNumberOfChannels;
+@property(readonly) NSInteger maximumOutputNumberOfChannels;
+@property(readonly) float inputGain;
+@property(readonly) BOOL inputGainSettable;
+@property(readonly) BOOL inputAvailable;
+@property(readonly, nullable) NSArray<AVAudioSessionDataSourceDescription *> *inputDataSources;
+@property(readonly, nullable) AVAudioSessionDataSourceDescription *inputDataSource;
+@property(readonly, nullable) NSArray<AVAudioSessionDataSourceDescription *> *outputDataSources;
+@property(readonly, nullable) AVAudioSessionDataSourceDescription *outputDataSource;
+@property(readonly) double sampleRate;
+@property(readonly) double preferredSampleRate;
+@property(readonly) NSInteger inputNumberOfChannels;
+@property(readonly) NSInteger outputNumberOfChannels;
+@property(readonly) float outputVolume;
+@property(readonly) NSTimeInterval inputLatency;
+@property(readonly) NSTimeInterval outputLatency;
+@property(readonly) NSTimeInterval IOBufferDuration;
+@property(readonly) NSTimeInterval preferredIOBufferDuration;
+
+/** Default constructor. */
++ (instancetype)sharedInstance;
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Adds a delegate, which is held weakly. */
+- (void)addDelegate:(id<RTCAudioSessionDelegate>)delegate;
+/** Removes an added delegate. */
+- (void)removeDelegate:(id<RTCAudioSessionDelegate>)delegate;
+
+/** Request exclusive access to the audio session for configuration. This call
+ *  will block if the lock is held by another object.
+ */
+- (void)lockForConfiguration;
+/** Relinquishes exclusive access to the audio session. */
+- (void)unlockForConfiguration;
+
+/** If |active|, activates the audio session if it isn't already active.
+ *  Successful calls must be balanced with a setActive:NO when activation is no
+ *  longer required. If not |active|, deactivates the audio session if one is
+ *  active and this is the last balanced call. When deactivating, the
+ *  AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation option is passed to
+ *  AVAudioSession.
+ */
+- (BOOL)setActive:(BOOL)active error:(NSError **)outError;
+
+// The following methods are proxies for the associated methods on
+// AVAudioSession. |lockForConfiguration| must be called before using them
+// otherwise they will fail with kRTCAudioSessionErrorLockRequired.
+
+- (BOOL)setCategory:(NSString *)category
+        withOptions:(AVAudioSessionCategoryOptions)options
+              error:(NSError **)outError;
+- (BOOL)setMode:(NSString *)mode error:(NSError **)outError;
+- (BOOL)setInputGain:(float)gain error:(NSError **)outError;
+- (BOOL)setPreferredSampleRate:(double)sampleRate error:(NSError **)outError;
+- (BOOL)setPreferredIOBufferDuration:(NSTimeInterval)duration error:(NSError **)outError;
+- (BOOL)setPreferredInputNumberOfChannels:(NSInteger)count error:(NSError **)outError;
+- (BOOL)setPreferredOutputNumberOfChannels:(NSInteger)count error:(NSError **)outError;
+- (BOOL)overrideOutputAudioPort:(AVAudioSessionPortOverride)portOverride error:(NSError **)outError;
+- (BOOL)setPreferredInput:(AVAudioSessionPortDescription *)inPort error:(NSError **)outError;
+- (BOOL)setInputDataSource:(AVAudioSessionDataSourceDescription *)dataSource
+                     error:(NSError **)outError;
+- (BOOL)setOutputDataSource:(AVAudioSessionDataSourceDescription *)dataSource
+                      error:(NSError **)outError;
+@end
+
+@interface RTCAudioSession (Configuration)
+
+/** Applies the configuration to the current session. Attempts to set all
+ *  properties even if previous ones fail. Only the last error will be
+ *  returned.
+ *  |lockForConfiguration| must be called first.
+ */
+- (BOOL)setConfiguration:(RTCAudioSessionConfiguration *)configuration error:(NSError **)outError;
+
+/** Convenience method that calls both setConfiguration and setActive.
+ *  |lockForConfiguration| must be called first.
+ */
+- (BOOL)setConfiguration:(RTCAudioSessionConfiguration *)configuration
+                  active:(BOOL)active
+                   error:(NSError **)outError;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 48 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h

@@ -0,0 +1,48 @@
+/*
+ *  Copyright 2016 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXTERN const int kRTCAudioSessionPreferredNumberOfChannels;
+RTC_EXTERN const double kRTCAudioSessionHighPerformanceSampleRate;
+RTC_EXTERN const double kRTCAudioSessionLowComplexitySampleRate;
+RTC_EXTERN const double kRTCAudioSessionHighPerformanceIOBufferDuration;
+RTC_EXTERN const double kRTCAudioSessionLowComplexityIOBufferDuration;
+
+// Struct to hold configuration values.
+RTC_EXPORT
+@interface RTCAudioSessionConfiguration : NSObject
+
+@property(nonatomic, strong) NSString *category;
+@property(nonatomic, assign) AVAudioSessionCategoryOptions categoryOptions;
+@property(nonatomic, strong) NSString *mode;
+@property(nonatomic, assign) double sampleRate;
+@property(nonatomic, assign) NSTimeInterval ioBufferDuration;
+@property(nonatomic, assign) NSInteger inputNumberOfChannels;
+@property(nonatomic, assign) NSInteger outputNumberOfChannels;
+
+/** Initializes configuration to defaults. */
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+
+/** Returns the current configuration of the audio session. */
++ (instancetype)currentConfiguration;
+/** Returns the configuration that WebRTC needs. */
++ (instancetype)webRTCConfiguration;
+/** Provide a way to override the default configuration. */
++ (void)setWebRTCConfiguration:(RTCAudioSessionConfiguration *)configuration;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 32 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCAudioSource.h

@@ -0,0 +1,32 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCMediaSource.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCAudioSource : RTCMediaSource
+
+- (instancetype)init NS_UNAVAILABLE;
+
+// Sets the volume for the RTCMediaSource. |volume| is a gain value in the range
+// [0, 10].
+// Temporary fix to be able to modify volume of remote audio tracks.
+// TODO(kthelgason): Property stays here temporarily until a proper volume-api
+// is available on the surface exposed by webrtc.
+@property(nonatomic, assign) double volume;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 28 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCAudioTrack.h

@@ -0,0 +1,28 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import "RTCMacros.h"
+#import "RTCMediaStreamTrack.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class RTCAudioSource;
+
+RTC_EXPORT
+@interface RTCAudioTrack : RTCMediaStreamTrack
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** The audio source for this audio track. */
+@property(nonatomic, readonly) RTCAudioSource *source;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 52 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCVPixelBuffer.h

@@ -0,0 +1,52 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoFrameBuffer.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** RTCVideoFrameBuffer containing a CVPixelBufferRef */
+RTC_EXPORT
+@interface RTCCVPixelBuffer : NSObject <RTCVideoFrameBuffer>
+
+@property(nonatomic, readonly) CVPixelBufferRef pixelBuffer;
+@property(nonatomic, readonly) int cropX;
+@property(nonatomic, readonly) int cropY;
+@property(nonatomic, readonly) int cropWidth;
+@property(nonatomic, readonly) int cropHeight;
+
++ (NSSet<NSNumber *> *)supportedPixelFormats;
+
+- (instancetype)initWithPixelBuffer:(CVPixelBufferRef)pixelBuffer;
+- (instancetype)initWithPixelBuffer:(CVPixelBufferRef)pixelBuffer
+                       adaptedWidth:(int)adaptedWidth
+                      adaptedHeight:(int)adaptedHeight
+                          cropWidth:(int)cropWidth
+                         cropHeight:(int)cropHeight
+                              cropX:(int)cropX
+                              cropY:(int)cropY;
+
+- (BOOL)requiresCropping;
+- (BOOL)requiresScalingToWidth:(int)width height:(int)height;
+- (int)bufferSizeForCroppingAndScalingToWidth:(int)width height:(int)height;
+
+/** The minimum size of the |tmpBuffer| must be the number of bytes returned from the
+ * bufferSizeForCroppingAndScalingToWidth:height: method.
+ * If that size is 0, the |tmpBuffer| may be nil.
+ */
+- (BOOL)cropAndScaleTo:(CVPixelBufferRef)outputPixelBuffer
+        withTempBuffer:(nullable uint8_t *)tmpBuffer;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 35 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCallbackLogger.h

@@ -0,0 +1,35 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCLogging.h"
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+// This class intercepts WebRTC logs and forwards them to a registered block.
+// This class is not threadsafe.
+RTC_EXPORT
+@interface RTCCallbackLogger : NSObject
+
+// The severity level to capture. The default is kRTCLoggingSeverityInfo.
+@property(nonatomic, assign) RTCLoggingSeverity severity;
+
+// The callback will be called on the same thread that does the logging, so
+// if the logging callback can be slow it may be a good idea to implement
+// dispatching to some other queue.
+- (void)start:(nullable void (^)(NSString*))callback;
+
+- (void)stop;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 30 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCameraPreviewView.h

@@ -0,0 +1,30 @@
+/*
+ *  Copyright 2015 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+#import "RTCMacros.h"
+
+@class AVCaptureSession;
+
+/** RTCCameraPreviewView is a view that renders local video from an
+ *  AVCaptureSession.
+ */
+RTC_EXPORT
+@interface RTCCameraPreviewView : UIView
+
+/** The capture session being rendered in the view. Capture session
+ *  is assigned to AVCaptureVideoPreviewLayer async in the same
+ *  queue that the AVCaptureSession is started/stopped.
+ */
+@property(nonatomic, strong) AVCaptureSession* captureSession;
+
+@end

+ 56 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCameraVideoCapturer.h

@@ -0,0 +1,56 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoCapturer.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+// Camera capture that implements RTCVideoCapturer. Delivers frames to a RTCVideoCapturerDelegate
+// (usually RTCVideoSource).
+NS_EXTENSION_UNAVAILABLE_IOS("Camera not available in app extensions.")
+@interface RTCCameraVideoCapturer : RTCVideoCapturer
+
+// Capture session that is used for capturing. Valid from initialization to dealloc.
+@property(readonly, nonatomic) AVCaptureSession *captureSession;
+
+// Returns list of available capture devices that support video capture.
++ (NSArray<AVCaptureDevice *> *)captureDevices;
+// Returns list of formats that are supported by this class for this device.
++ (NSArray<AVCaptureDeviceFormat *> *)supportedFormatsForDevice:(AVCaptureDevice *)device;
+
+// Returns the most efficient supported output pixel format for this capturer.
+- (FourCharCode)preferredOutputPixelFormat;
+
+// Starts the capture session asynchronously and notifies callback on completion.
+// The device will capture video in the format given in the `format` parameter. If the pixel format
+// in `format` is supported by the WebRTC pipeline, the same pixel format will be used for the
+// output. Otherwise, the format returned by `preferredOutputPixelFormat` will be used.
+- (void)startCaptureWithDevice:(AVCaptureDevice *)device
+                        format:(AVCaptureDeviceFormat *)format
+                           fps:(NSInteger)fps
+             completionHandler:(nullable void (^)(NSError *))completionHandler;
+// Stops the capture session asynchronously and notifies callback on completion.
+- (void)stopCaptureWithCompletionHandler:(nullable void (^)(void))completionHandler;
+
+// Starts the capture session asynchronously.
+- (void)startCaptureWithDevice:(AVCaptureDevice *)device
+                        format:(AVCaptureDeviceFormat *)format
+                           fps:(NSInteger)fps;
+// Stops the capture session asynchronously.
+- (void)stopCapture;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 44 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCertificate.h

@@ -0,0 +1,44 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCCertificate : NSObject <NSCopying>
+
+/** Private key in PEM. */
+@property(nonatomic, readonly, copy) NSString *private_key;
+
+/** Public key in an x509 cert encoded in PEM. */
+@property(nonatomic, readonly, copy) NSString *certificate;
+
+/**
+ * Initialize an RTCCertificate with PEM strings for private_key and certificate.
+ */
+- (instancetype)initWithPrivateKey:(NSString *)private_key
+                       certificate:(NSString *)certificate NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Generate a new certificate for 're' use.
+ *
+ *  Optional dictionary of parameters. Defaults to KeyType ECDSA if none are
+ *  provided.
+ *  - name: "ECDSA" or "RSASSA-PKCS1-v1_5"
+ */
++ (nullable RTCCertificate *)generateCertificateWithParams:(NSDictionary *)params;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 24 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCodecSpecificInfo.h

@@ -0,0 +1,24 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Implement this protocol to pass codec specific info from the encoder.
+ *  Corresponds to webrtc::CodecSpecificInfo.
+ */
+RTC_EXPORT
+@protocol RTCCodecSpecificInfo <NSObject>
+@end
+
+NS_ASSUME_NONNULL_END

+ 27 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCCodecSpecificInfoH264.h

@@ -0,0 +1,27 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCCodecSpecificInfo.h"
+#import "RTCMacros.h"
+
+/** Class for H264 specific config. */
+typedef NS_ENUM(NSUInteger, RTCH264PacketizationMode) {
+  RTCH264PacketizationModeNonInterleaved = 0,  // Mode 1 - STAP-A, FU-A is allowed
+  RTCH264PacketizationModeSingleNalUnit        // Mode 0 - only single NALU allowed
+};
+
+RTC_EXPORT
+@interface RTCCodecSpecificInfoH264 : NSObject <RTCCodecSpecificInfo>
+
+@property(nonatomic, assign) RTCH264PacketizationMode packetizationMode;
+
+@end

+ 175 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCConfiguration.h

@@ -0,0 +1,175 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCCertificate.h"
+#import "RTCMacros.h"
+
+@class RTCIceServer;
+@class RTCIntervalRange;
+
+/**
+ * Represents the ice transport policy. This exposes the same states in C++,
+ * which include one more state than what exists in the W3C spec.
+ */
+typedef NS_ENUM(NSInteger, RTCIceTransportPolicy) {
+  RTCIceTransportPolicyNone,
+  RTCIceTransportPolicyRelay,
+  RTCIceTransportPolicyNoHost,
+  RTCIceTransportPolicyAll
+};
+
+/** Represents the bundle policy. */
+typedef NS_ENUM(NSInteger, RTCBundlePolicy) {
+  RTCBundlePolicyBalanced,
+  RTCBundlePolicyMaxCompat,
+  RTCBundlePolicyMaxBundle
+};
+
+/** Represents the rtcp mux policy. */
+typedef NS_ENUM(NSInteger, RTCRtcpMuxPolicy) { RTCRtcpMuxPolicyNegotiate, RTCRtcpMuxPolicyRequire };
+
+/** Represents the tcp candidate policy. */
+typedef NS_ENUM(NSInteger, RTCTcpCandidatePolicy) {
+  RTCTcpCandidatePolicyEnabled,
+  RTCTcpCandidatePolicyDisabled
+};
+
+/** Represents the candidate network policy. */
+typedef NS_ENUM(NSInteger, RTCCandidateNetworkPolicy) {
+  RTCCandidateNetworkPolicyAll,
+  RTCCandidateNetworkPolicyLowCost
+};
+
+/** Represents the continual gathering policy. */
+typedef NS_ENUM(NSInteger, RTCContinualGatheringPolicy) {
+  RTCContinualGatheringPolicyGatherOnce,
+  RTCContinualGatheringPolicyGatherContinually
+};
+
+/** Represents the encryption key type. */
+typedef NS_ENUM(NSInteger, RTCEncryptionKeyType) {
+  RTCEncryptionKeyTypeRSA,
+  RTCEncryptionKeyTypeECDSA,
+};
+
+/** Represents the chosen SDP semantics for the RTCPeerConnection. */
+typedef NS_ENUM(NSInteger, RTCSdpSemantics) {
+  RTCSdpSemanticsPlanB,
+  RTCSdpSemanticsUnifiedPlan,
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCConfiguration : NSObject
+
+/** An array of Ice Servers available to be used by ICE. */
+@property(nonatomic, copy) NSArray<RTCIceServer *> *iceServers;
+
+/** An RTCCertificate for 're' use. */
+@property(nonatomic, nullable) RTCCertificate *certificate;
+
+/** Which candidates the ICE agent is allowed to use. The W3C calls it
+ * |iceTransportPolicy|, while in C++ it is called |type|. */
+@property(nonatomic, assign) RTCIceTransportPolicy iceTransportPolicy;
+
+/** The media-bundling policy to use when gathering ICE candidates. */
+@property(nonatomic, assign) RTCBundlePolicy bundlePolicy;
+
+/** The rtcp-mux policy to use when gathering ICE candidates. */
+@property(nonatomic, assign) RTCRtcpMuxPolicy rtcpMuxPolicy;
+@property(nonatomic, assign) RTCTcpCandidatePolicy tcpCandidatePolicy;
+@property(nonatomic, assign) RTCCandidateNetworkPolicy candidateNetworkPolicy;
+@property(nonatomic, assign) RTCContinualGatheringPolicy continualGatheringPolicy;
+
+/** By default, the PeerConnection will use a limited number of IPv6 network
+ *  interfaces, in order to avoid too many ICE candidate pairs being created
+ *  and delaying ICE completion.
+ *
+ *  Can be set to INT_MAX to effectively disable the limit.
+ */
+@property(nonatomic, assign) int maxIPv6Networks;
+
+/** Exclude link-local network interfaces
+ *  from considertaion for gathering ICE candidates.
+ *  Defaults to NO.
+ */
+@property(nonatomic, assign) BOOL disableLinkLocalNetworks;
+
+@property(nonatomic, assign) int audioJitterBufferMaxPackets;
+@property(nonatomic, assign) BOOL audioJitterBufferFastAccelerate;
+@property(nonatomic, assign) int iceConnectionReceivingTimeout;
+@property(nonatomic, assign) int iceBackupCandidatePairPingInterval;
+
+/** Key type used to generate SSL identity. Default is ECDSA. */
+@property(nonatomic, assign) RTCEncryptionKeyType keyType;
+
+/** ICE candidate pool size as defined in JSEP. Default is 0. */
+@property(nonatomic, assign) int iceCandidatePoolSize;
+
+/** Prune turn ports on the same network to the same turn server.
+ *  Default is NO.
+ */
+@property(nonatomic, assign) BOOL shouldPruneTurnPorts;
+
+/** If set to YES, this means the ICE transport should presume TURN-to-TURN
+ *  candidate pairs will succeed, even before a binding response is received.
+ */
+@property(nonatomic, assign) BOOL shouldPresumeWritableWhenFullyRelayed;
+
+/** If set to non-nil, controls the minimal interval between consecutive ICE
+ *  check packets.
+ */
+@property(nonatomic, copy, nullable) NSNumber *iceCheckMinInterval;
+
+/** ICE Periodic Regathering
+ *  If set, WebRTC will periodically create and propose candidates without
+ *  starting a new ICE generation. The regathering happens continuously with
+ *  interval specified in milliseconds by the uniform distribution [a, b].
+ */
+@property(nonatomic, strong, nullable) RTCIntervalRange *iceRegatherIntervalRange;
+
+/** Configure the SDP semantics used by this PeerConnection. Note that the
+ *  WebRTC 1.0 specification requires UnifiedPlan semantics. The
+ *  RTCRtpTransceiver API is only available with UnifiedPlan semantics.
+ *
+ *  PlanB will cause RTCPeerConnection to create offers and answers with at
+ *  most one audio and one video m= section with multiple RTCRtpSenders and
+ *  RTCRtpReceivers specified as multiple a=ssrc lines within the section. This
+ *  will also cause RTCPeerConnection to ignore all but the first m= section of
+ *  the same media type.
+ *
+ *  UnifiedPlan will cause RTCPeerConnection to create offers and answers with
+ *  multiple m= sections where each m= section maps to one RTCRtpSender and one
+ *  RTCRtpReceiver (an RTCRtpTransceiver), either both audio or both video. This
+ *  will also cause RTCPeerConnection to ignore all but the first a=ssrc lines
+ *  that form a Plan B stream.
+ *
+ *  For users who wish to send multiple audio/video streams and need to stay
+ *  interoperable with legacy WebRTC implementations or use legacy APIs,
+ *  specify PlanB.
+ *
+ *  For all other users, specify UnifiedPlan.
+ */
+@property(nonatomic, assign) RTCSdpSemantics sdpSemantics;
+
+/** Actively reset the SRTP parameters when the DTLS transports underneath are
+ *  changed after offer/answer negotiation. This is only intended to be a
+ *  workaround for crbug.com/835958
+ */
+@property(nonatomic, assign) BOOL activeResetSrtpParams;
+
+- (instancetype)init;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 130 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDataChannel.h

@@ -0,0 +1,130 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AvailabilityMacros.h>
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCDataBuffer : NSObject
+
+/** NSData representation of the underlying buffer. */
+@property(nonatomic, readonly) NSData *data;
+
+/** Indicates whether |data| contains UTF-8 or binary data. */
+@property(nonatomic, readonly) BOOL isBinary;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ * Initialize an RTCDataBuffer from NSData. |isBinary| indicates whether |data|
+ * contains UTF-8 or binary data.
+ */
+- (instancetype)initWithData:(NSData *)data isBinary:(BOOL)isBinary;
+
+@end
+
+@class RTCDataChannel;
+RTC_EXPORT
+@protocol RTCDataChannelDelegate <NSObject>
+
+/** The data channel state changed. */
+- (void)dataChannelDidChangeState:(RTCDataChannel *)dataChannel;
+
+/** The data channel successfully received a data buffer. */
+- (void)dataChannel:(RTCDataChannel *)dataChannel
+    didReceiveMessageWithBuffer:(RTCDataBuffer *)buffer;
+
+@optional
+/** The data channel's |bufferedAmount| changed. */
+- (void)dataChannel:(RTCDataChannel *)dataChannel didChangeBufferedAmount:(uint64_t)amount;
+
+@end
+
+/** Represents the state of the data channel. */
+typedef NS_ENUM(NSInteger, RTCDataChannelState) {
+  RTCDataChannelStateConnecting,
+  RTCDataChannelStateOpen,
+  RTCDataChannelStateClosing,
+  RTCDataChannelStateClosed,
+};
+
+RTC_EXPORT
+@interface RTCDataChannel : NSObject
+
+/**
+ * A label that can be used to distinguish this data channel from other data
+ * channel objects.
+ */
+@property(nonatomic, readonly) NSString *label;
+
+/** Whether the data channel can send messages in unreliable mode. */
+@property(nonatomic, readonly) BOOL isReliable DEPRECATED_ATTRIBUTE;
+
+/** Returns whether this data channel is ordered or not. */
+@property(nonatomic, readonly) BOOL isOrdered;
+
+/** Deprecated. Use maxPacketLifeTime. */
+@property(nonatomic, readonly) NSUInteger maxRetransmitTime DEPRECATED_ATTRIBUTE;
+
+/**
+ * The length of the time window (in milliseconds) during which transmissions
+ * and retransmissions may occur in unreliable mode.
+ */
+@property(nonatomic, readonly) uint16_t maxPacketLifeTime;
+
+/**
+ * The maximum number of retransmissions that are attempted in unreliable mode.
+ */
+@property(nonatomic, readonly) uint16_t maxRetransmits;
+
+/**
+ * The name of the sub-protocol used with this data channel, if any. Otherwise
+ * this returns an empty string.
+ */
+@property(nonatomic, readonly) NSString *protocol;
+
+/**
+ * Returns whether this data channel was negotiated by the application or not.
+ */
+@property(nonatomic, readonly) BOOL isNegotiated;
+
+/** Deprecated. Use channelId. */
+@property(nonatomic, readonly) NSInteger streamId DEPRECATED_ATTRIBUTE;
+
+/** The identifier for this data channel. */
+@property(nonatomic, readonly) int channelId;
+
+/** The state of the data channel. */
+@property(nonatomic, readonly) RTCDataChannelState readyState;
+
+/**
+ * The number of bytes of application data that have been queued using
+ * |sendData:| but that have not yet been transmitted to the network.
+ */
+@property(nonatomic, readonly) uint64_t bufferedAmount;
+
+/** The delegate for this data channel. */
+@property(nonatomic, weak) id<RTCDataChannelDelegate> delegate;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Closes the data channel. */
+- (void)close;
+
+/** Attempt to send |data| on this data channel's underlying data transport. */
+- (BOOL)sendData:(RTCDataBuffer *)data;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 52 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDataChannelConfiguration.h

@@ -0,0 +1,52 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AvailabilityMacros.h>
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCDataChannelConfiguration : NSObject
+
+/** Set to YES if ordered delivery is required. */
+@property(nonatomic, assign) BOOL isOrdered;
+
+/** Deprecated. Use maxPacketLifeTime. */
+@property(nonatomic, assign) NSInteger maxRetransmitTimeMs DEPRECATED_ATTRIBUTE;
+
+/**
+ * Max period in milliseconds in which retransmissions will be sent. After this
+ * time, no more retransmissions will be sent. -1 if unset.
+ */
+@property(nonatomic, assign) int maxPacketLifeTime;
+
+/** The max number of retransmissions. -1 if unset. */
+@property(nonatomic, assign) int maxRetransmits;
+
+/** Set to YES if the channel has been externally negotiated and we do not send
+ * an in-band signalling in the form of an "open" message.
+ */
+@property(nonatomic, assign) BOOL isNegotiated;
+
+/** Deprecated. Use channelId. */
+@property(nonatomic, assign) int streamId DEPRECATED_ATTRIBUTE;
+
+/** The id of the data channel. */
+@property(nonatomic, assign) int channelId;
+
+/** Set by the application and opaque to the WebRTC implementation. */
+@property(nonatomic) NSString* protocol;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 25 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDefaultVideoDecoderFactory.h

@@ -0,0 +1,25 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoDecoderFactory.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** This decoder factory include support for all codecs bundled with WebRTC. If using custom
+ *  codecs, create custom implementations of RTCVideoEncoderFactory and RTCVideoDecoderFactory.
+ */
+RTC_EXPORT
+@interface RTCDefaultVideoDecoderFactory : NSObject <RTCVideoDecoderFactory>
+@end
+
+NS_ASSUME_NONNULL_END

+ 30 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDefaultVideoEncoderFactory.h

@@ -0,0 +1,30 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoEncoderFactory.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** This encoder factory include support for all codecs bundled with WebRTC. If using custom
+ *  codecs, create custom implementations of RTCVideoEncoderFactory and RTCVideoDecoderFactory.
+ */
+RTC_EXPORT
+@interface RTCDefaultVideoEncoderFactory : NSObject <RTCVideoEncoderFactory>
+
+@property(nonatomic, retain) RTCVideoCodecInfo *preferredCodec;
+
++ (NSArray<RTCVideoCodecInfo *> *)supportedCodecs;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 44 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDispatcher.h

@@ -0,0 +1,44 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+typedef NS_ENUM(NSInteger, RTCDispatcherQueueType) {
+  // Main dispatcher queue.
+  RTCDispatcherTypeMain,
+  // Used for starting/stopping AVCaptureSession, and assigning
+  // capture session to AVCaptureVideoPreviewLayer.
+  RTCDispatcherTypeCaptureSession,
+  // Used for operations on AVAudioSession.
+  RTCDispatcherTypeAudioSession,
+};
+
+/** Dispatcher that asynchronously dispatches blocks to a specific
+ *  shared dispatch queue.
+ */
+RTC_EXPORT
+@interface RTCDispatcher : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Dispatch the block asynchronously on the queue for dispatchType.
+ *  @param dispatchType The queue type to dispatch on.
+ *  @param block The block to dispatch asynchronously.
+ */
++ (void)dispatchAsyncOnType:(RTCDispatcherQueueType)dispatchType block:(dispatch_block_t)block;
+
+/** Returns YES if run on queue for the dispatchType otherwise NO.
+ *  Useful for asserting that a method is run on a correct queue.
+ */
++ (BOOL)isOnQueueForType:(RTCDispatcherQueueType)dispatchType;
+
+@end

+ 70 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCDtmfSender.h

@@ -0,0 +1,70 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@protocol RTCDtmfSender <NSObject>
+
+/**
+ * Returns true if this RTCDtmfSender is capable of sending DTMF. Otherwise
+ * returns false. To be able to send DTMF, the associated RTCRtpSender must be
+ * able to send packets, and a "telephone-event" codec must be negotiated.
+ */
+@property(nonatomic, readonly) BOOL canInsertDtmf;
+
+/**
+ * Queues a task that sends the DTMF tones. The tones parameter is treated
+ * as a series of characters. The characters 0 through 9, A through D, #, and *
+ * generate the associated DTMF tones. The characters a to d are equivalent
+ * to A to D. The character ',' indicates a delay of 2 seconds before
+ * processing the next character in the tones parameter.
+ *
+ * Unrecognized characters are ignored.
+ *
+ * @param duration The parameter indicates the duration to use for each
+ * character passed in the tones parameter. The duration cannot be more
+ * than 6000 or less than 70 ms.
+ *
+ * @param interToneGap The parameter indicates the gap between tones.
+ * This parameter must be at least 50 ms but should be as short as
+ * possible.
+ *
+ * If InsertDtmf is called on the same object while an existing task for this
+ * object to generate DTMF is still running, the previous task is canceled.
+ * Returns true on success and false on failure.
+ */
+- (BOOL)insertDtmf:(nonnull NSString *)tones
+          duration:(NSTimeInterval)duration
+      interToneGap:(NSTimeInterval)interToneGap;
+
+/** The tones remaining to be played out */
+- (nonnull NSString *)remainingTones;
+
+/**
+ * The current tone duration value. This value will be the value last set via the
+ * insertDtmf method, or the default value of 100 ms if insertDtmf was never called.
+ */
+- (NSTimeInterval)duration;
+
+/**
+ * The current value of the between-tone gap. This value will be the value last set
+ * via the insertDtmf() method, or the default value of 50 ms if insertDtmf() was never
+ * called.
+ */
+- (NSTimeInterval)interToneGap;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 44 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCEAGLVideoView.h

@@ -0,0 +1,44 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoRenderer.h"
+#import "RTCVideoViewShading.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class RTCEAGLVideoView;
+
+RTC_EXPORT
+@protocol RTCEAGLVideoViewDelegate <RTCVideoViewDelegate>
+@end
+
+/**
+ * RTCEAGLVideoView is an RTCVideoRenderer which renders video frames in its
+ * bounds using OpenGLES 2.0 or OpenGLES 3.0.
+ */
+RTC_EXPORT
+NS_EXTENSION_UNAVAILABLE_IOS("Rendering not available in app extensions.")
+@interface RTCEAGLVideoView : UIView <RTCVideoRenderer>
+
+@property(nonatomic, weak) id<RTCVideoViewDelegate> delegate;
+
+- (instancetype)initWithFrame:(CGRect)frame
+                       shader:(id<RTCVideoViewShading>)shader NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)initWithCoder:(NSCoder *)aDecoder
+                       shader:(id<RTCVideoViewShading>)shader NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 53 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCEncodedImage.h

@@ -0,0 +1,53 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoFrame.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Represents an encoded frame's type. */
+typedef NS_ENUM(NSUInteger, RTCFrameType) {
+  RTCFrameTypeEmptyFrame = 0,
+  RTCFrameTypeAudioFrameSpeech = 1,
+  RTCFrameTypeAudioFrameCN = 2,
+  RTCFrameTypeVideoFrameKey = 3,
+  RTCFrameTypeVideoFrameDelta = 4,
+};
+
+typedef NS_ENUM(NSUInteger, RTCVideoContentType) {
+  RTCVideoContentTypeUnspecified,
+  RTCVideoContentTypeScreenshare,
+};
+
+/** Represents an encoded frame. Corresponds to webrtc::EncodedImage. */
+RTC_EXPORT
+@interface RTCEncodedImage : NSObject
+
+@property(nonatomic, strong) NSData *buffer;
+@property(nonatomic, assign) int32_t encodedWidth;
+@property(nonatomic, assign) int32_t encodedHeight;
+@property(nonatomic, assign) uint32_t timeStamp;
+@property(nonatomic, assign) int64_t captureTimeMs;
+@property(nonatomic, assign) int64_t ntpTimeMs;
+@property(nonatomic, assign) uint8_t flags;
+@property(nonatomic, assign) int64_t encodeStartMs;
+@property(nonatomic, assign) int64_t encodeFinishMs;
+@property(nonatomic, assign) RTCFrameType frameType;
+@property(nonatomic, assign) RTCVideoRotation rotation;
+@property(nonatomic, assign) BOOL completeFrame;
+@property(nonatomic, strong) NSNumber *qp;
+@property(nonatomic, assign) RTCVideoContentType contentType;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 46 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCFieldTrials.h

@@ -0,0 +1,46 @@
+/*
+ *  Copyright 2016 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+/** The only valid value for the following if set is kRTCFieldTrialEnabledValue. */
+RTC_EXTERN NSString * const kRTCFieldTrialAudioSendSideBweKey;
+RTC_EXTERN NSString * const kRTCFieldTrialAudioSendSideBweForVideoKey;
+RTC_EXTERN NSString * const kRTCFieldTrialAudioForceNoTWCCKey;
+RTC_EXTERN NSString * const kRTCFieldTrialAudioForceABWENoTWCCKey;
+RTC_EXTERN NSString * const kRTCFieldTrialSendSideBweWithOverheadKey;
+RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03AdvertisedKey;
+RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03Key;
+RTC_EXTERN NSString * const kRTCFieldTrialImprovedBitrateEstimateKey;
+RTC_EXTERN NSString * const kRTCFieldTrialH264HighProfileKey;
+RTC_EXTERN NSString * const kRTCFieldTrialMinimizeResamplingOnMobileKey;
+
+/** The valid value for field trials above. */
+RTC_EXTERN NSString * const kRTCFieldTrialEnabledValue;
+
+/** Use a string returned by RTCFieldTrialMedianSlopeFilterValue as the value. */
+RTC_EXTERN NSString * const kRTCFieldTrialMedianSlopeFilterKey;
+RTC_EXTERN NSString *RTCFieldTrialMedianSlopeFilterValue(
+    size_t windowSize, double thresholdGain);
+
+/** Use a string returned by RTCFieldTrialTrendlineFilterValue as the value. */
+RTC_EXTERN NSString * const kRTCFieldTrialTrendlineFilterKey;
+/** Returns a valid value for kRTCFieldTrialTrendlineFilterKey. */
+RTC_EXTERN NSString *RTCFieldTrialTrendlineFilterValue(
+    size_t windowSize, double smoothingCoeff, double thresholdGain);
+
+/** Initialize field trials using a dictionary mapping field trial keys to their values. See above
+ *  for valid keys and values.
+ *  Must be called before any other call into WebRTC. See:
+ *  webrtc/system_wrappers/include/field_trial_default.h
+ */
+RTC_EXTERN void RTCInitFieldTrialDictionary(NSDictionary<NSString *, NSString *> *fieldTrials);

+ 74 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCFileLogger.h

@@ -0,0 +1,74 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+typedef NS_ENUM(NSUInteger, RTCFileLoggerSeverity) {
+  RTCFileLoggerSeverityVerbose,
+  RTCFileLoggerSeverityInfo,
+  RTCFileLoggerSeverityWarning,
+  RTCFileLoggerSeverityError
+};
+
+typedef NS_ENUM(NSUInteger, RTCFileLoggerRotationType) {
+  RTCFileLoggerTypeCall,
+  RTCFileLoggerTypeApp,
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+// This class intercepts WebRTC logs and saves them to a file. The file size
+// will not exceed the given maximum bytesize. When the maximum bytesize is
+// reached, logs are rotated according to the rotationType specified.
+// For kRTCFileLoggerTypeCall, logs from the beginning and the end
+// are preserved while the middle section is overwritten instead.
+// For kRTCFileLoggerTypeApp, the oldest log is overwritten.
+// This class is not threadsafe.
+RTC_EXPORT
+@interface RTCFileLogger : NSObject
+
+// The severity level to capture. The default is kRTCFileLoggerSeverityInfo.
+@property(nonatomic, assign) RTCFileLoggerSeverity severity;
+
+// The rotation type for this file logger. The default is
+// kRTCFileLoggerTypeCall.
+@property(nonatomic, readonly) RTCFileLoggerRotationType rotationType;
+
+// Disables buffering disk writes. Should be set before |start|. Buffering
+// is enabled by default for performance.
+@property(nonatomic, assign) BOOL shouldDisableBuffering;
+
+// Default constructor provides default settings for dir path, file size and
+// rotation type.
+- (instancetype)init;
+
+// Create file logger with default rotation type.
+- (instancetype)initWithDirPath:(NSString *)dirPath maxFileSize:(NSUInteger)maxFileSize;
+
+- (instancetype)initWithDirPath:(NSString *)dirPath
+                    maxFileSize:(NSUInteger)maxFileSize
+                   rotationType:(RTCFileLoggerRotationType)rotationType NS_DESIGNATED_INITIALIZER;
+
+// Starts writing WebRTC logs to disk if not already started. Overwrites any
+// existing file(s).
+- (void)start;
+
+// Stops writing WebRTC logs to disk. This method is also called on dealloc.
+- (void)stop;
+
+// Returns the current contents of the logs, or nil if start has been called
+// without a stop.
+- (nullable NSData *)logData;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 51 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCFileVideoCapturer.h

@@ -0,0 +1,51 @@
+/*
+ *  Copyright 2017 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCVideoCapturer.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Error passing block.
+ */
+typedef void (^RTCFileVideoCapturerErrorBlock)(NSError *error);
+
+/**
+ * Captures buffers from bundled video file.
+ *
+ * See @c RTCVideoCapturer for more info on capturers.
+ */
+RTC_EXPORT
+
+NS_CLASS_AVAILABLE_IOS(10)
+@interface RTCFileVideoCapturer : RTCVideoCapturer
+
+/**
+ * Starts asynchronous capture of frames from video file.
+ *
+ * Capturing is not started if error occurs. Underlying error will be
+ * relayed in the errorBlock if one is provided.
+ * Successfully captured video frames will be passed to the delegate.
+ *
+ * @param nameOfFile The name of the bundled video file to be read.
+ * @errorBlock block to be executed upon error.
+ */
+- (void)startCapturingFromFileNamed:(NSString *)nameOfFile
+                            onError:(__nullable RTCFileVideoCapturerErrorBlock)errorBlock;
+
+/**
+ * Immediately stops capture.
+ */
+- (void)stopCapture;
+@end
+
+NS_ASSUME_NONNULL_END

+ 60 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCH264ProfileLevelId.h

@@ -0,0 +1,60 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+RTC_EXPORT extern NSString *const kRTCVideoCodecH264Name;
+RTC_EXPORT extern NSString *const kRTCLevel31ConstrainedHigh;
+RTC_EXPORT extern NSString *const kRTCLevel31ConstrainedBaseline;
+RTC_EXPORT extern NSString *const kRTCMaxSupportedH264ProfileLevelConstrainedHigh;
+RTC_EXPORT extern NSString *const kRTCMaxSupportedH264ProfileLevelConstrainedBaseline;
+
+/** H264 Profiles and levels. */
+typedef NS_ENUM(NSUInteger, RTCH264Profile) {
+  RTCH264ProfileConstrainedBaseline,
+  RTCH264ProfileBaseline,
+  RTCH264ProfileMain,
+  RTCH264ProfileConstrainedHigh,
+  RTCH264ProfileHigh,
+};
+
+typedef NS_ENUM(NSUInteger, RTCH264Level) {
+  RTCH264Level1_b = 0,
+  RTCH264Level1 = 10,
+  RTCH264Level1_1 = 11,
+  RTCH264Level1_2 = 12,
+  RTCH264Level1_3 = 13,
+  RTCH264Level2 = 20,
+  RTCH264Level2_1 = 21,
+  RTCH264Level2_2 = 22,
+  RTCH264Level3 = 30,
+  RTCH264Level3_1 = 31,
+  RTCH264Level3_2 = 32,
+  RTCH264Level4 = 40,
+  RTCH264Level4_1 = 41,
+  RTCH264Level4_2 = 42,
+  RTCH264Level5 = 50,
+  RTCH264Level5_1 = 51,
+  RTCH264Level5_2 = 52
+};
+
+RTC_EXPORT
+@interface RTCH264ProfileLevelId : NSObject
+
+@property(nonatomic, readonly) RTCH264Profile profile;
+@property(nonatomic, readonly) RTCH264Level level;
+@property(nonatomic, readonly) NSString *hexString;
+
+- (instancetype)initWithHexString:(NSString *)hexString;
+- (instancetype)initWithProfile:(RTCH264Profile)profile level:(RTCH264Level)level;
+
+@end

+ 22 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCI420Buffer.h

@@ -0,0 +1,22 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+
+#import "RTCYUVPlanarBuffer.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Protocol for RTCYUVPlanarBuffers containing I420 data */
+RTC_EXPORT
+@protocol RTCI420Buffer <RTCYUVPlanarBuffer>
+@end
+
+NS_ASSUME_NONNULL_END

+ 49 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCIceCandidate.h

@@ -0,0 +1,49 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCIceCandidate : NSObject
+
+/**
+ * If present, the identifier of the "media stream identification" for the media
+ * component this candidate is associated with.
+ */
+@property(nonatomic, readonly, nullable) NSString *sdpMid;
+
+/**
+ * The index (starting at zero) of the media description this candidate is
+ * associated with in the SDP.
+ */
+@property(nonatomic, readonly) int sdpMLineIndex;
+
+/** The SDP string for this candidate. */
+@property(nonatomic, readonly) NSString *sdp;
+
+/** The URL of the ICE server which this candidate is gathered from. */
+@property(nonatomic, readonly, nullable) NSString *serverUrl;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ * Initialize an RTCIceCandidate from SDP.
+ */
+- (instancetype)initWithSdp:(NSString *)sdp
+              sdpMLineIndex:(int)sdpMLineIndex
+                     sdpMid:(nullable NSString *)sdpMid NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 114 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCIceServer.h

@@ -0,0 +1,114 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+typedef NS_ENUM(NSUInteger, RTCTlsCertPolicy) {
+  RTCTlsCertPolicySecure,
+  RTCTlsCertPolicyInsecureNoCheck
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCIceServer : NSObject
+
+/** URI(s) for this server represented as NSStrings. */
+@property(nonatomic, readonly) NSArray<NSString *> *urlStrings;
+
+/** Username to use if this RTCIceServer object is a TURN server. */
+@property(nonatomic, readonly, nullable) NSString *username;
+
+/** Credential to use if this RTCIceServer object is a TURN server. */
+@property(nonatomic, readonly, nullable) NSString *credential;
+
+/**
+ * TLS certificate policy to use if this RTCIceServer object is a TURN server.
+ */
+@property(nonatomic, readonly) RTCTlsCertPolicy tlsCertPolicy;
+
+/**
+  If the URIs in |urls| only contain IP addresses, this field can be used
+  to indicate the hostname, which may be necessary for TLS (using the SNI
+  extension). If |urls| itself contains the hostname, this isn't necessary.
+ */
+@property(nonatomic, readonly, nullable) NSString *hostname;
+
+/** List of protocols to be used in the TLS ALPN extension. */
+@property(nonatomic, readonly) NSArray<NSString *> *tlsAlpnProtocols;
+
+/**
+  List elliptic curves to be used in the TLS elliptic curves extension.
+  Only curve names supported by OpenSSL should be used (eg. "P-256","X25519").
+  */
+@property(nonatomic, readonly) NSArray<NSString *> *tlsEllipticCurves;
+
+- (nonnull instancetype)init NS_UNAVAILABLE;
+
+/** Convenience initializer for a server with no authentication (e.g. STUN). */
+- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings;
+
+/**
+ * Initialize an RTCIceServer with its associated URLs, optional username,
+ * optional credential, and credentialType.
+ */
+- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings
+                          username:(nullable NSString *)username
+                        credential:(nullable NSString *)credential;
+
+/**
+ * Initialize an RTCIceServer with its associated URLs, optional username,
+ * optional credential, and TLS cert policy.
+ */
+- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings
+                          username:(nullable NSString *)username
+                        credential:(nullable NSString *)credential
+                     tlsCertPolicy:(RTCTlsCertPolicy)tlsCertPolicy;
+
+/**
+ * Initialize an RTCIceServer with its associated URLs, optional username,
+ * optional credential, TLS cert policy and hostname.
+ */
+- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings
+                          username:(nullable NSString *)username
+                        credential:(nullable NSString *)credential
+                     tlsCertPolicy:(RTCTlsCertPolicy)tlsCertPolicy
+                          hostname:(nullable NSString *)hostname;
+
+/**
+ * Initialize an RTCIceServer with its associated URLs, optional username,
+ * optional credential, TLS cert policy, hostname and ALPN protocols.
+ */
+- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings
+                          username:(nullable NSString *)username
+                        credential:(nullable NSString *)credential
+                     tlsCertPolicy:(RTCTlsCertPolicy)tlsCertPolicy
+                          hostname:(nullable NSString *)hostname
+                  tlsAlpnProtocols:(NSArray<NSString *> *)tlsAlpnProtocols;
+
+/**
+ * Initialize an RTCIceServer with its associated URLs, optional username,
+ * optional credential, TLS cert policy, hostname, ALPN protocols and
+ * elliptic curves.
+ */
+- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings
+                          username:(nullable NSString *)username
+                        credential:(nullable NSString *)credential
+                     tlsCertPolicy:(RTCTlsCertPolicy)tlsCertPolicy
+                          hostname:(nullable NSString *)hostname
+                  tlsAlpnProtocols:(nullable NSArray<NSString *> *)tlsAlpnProtocols
+                 tlsEllipticCurves:(nullable NSArray<NSString *> *)tlsEllipticCurves
+    NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 25 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCIntervalRange.h

@@ -0,0 +1,25 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface RTCIntervalRange : NSObject
+
+@property(nonatomic, readonly) NSInteger min;
+@property(nonatomic, readonly) NSInteger max;
+
+- (instancetype)init;
+- (instancetype)initWithMin:(NSInteger)min max:(NSInteger)max NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 37 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCLegacyStatsReport.h

@@ -0,0 +1,37 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** This does not currently conform to the spec. */
+RTC_EXPORT
+@interface RTCLegacyStatsReport : NSObject
+
+/** Time since 1970-01-01T00:00:00Z in milliseconds. */
+@property(nonatomic, readonly) CFTimeInterval timestamp;
+
+/** The type of stats held by this object. */
+@property(nonatomic, readonly) NSString *type;
+
+/** The identifier for this object. */
+@property(nonatomic, readonly) NSString *reportId;
+
+/** A dictionary holding the actual stats. */
+@property(nonatomic, readonly) NSDictionary<NSString *, NSString *> *values;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 66 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCLogging.h

@@ -0,0 +1,66 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+// Subset of rtc::LoggingSeverity.
+typedef NS_ENUM(NSInteger, RTCLoggingSeverity) {
+  RTCLoggingSeverityVerbose,
+  RTCLoggingSeverityInfo,
+  RTCLoggingSeverityWarning,
+  RTCLoggingSeverityError,
+};
+
+// Wrapper for C++ RTC_LOG(sev) macros.
+// Logs the log string to the webrtc logstream for the given severity.
+RTC_EXTERN void RTCLogEx(RTCLoggingSeverity severity, NSString* log_string);
+
+// Wrapper for rtc::LogMessage::LogToDebug.
+// Sets the minimum severity to be logged to console.
+RTC_EXTERN void RTCSetMinDebugLogLevel(RTCLoggingSeverity severity);
+
+// Returns the filename with the path prefix removed.
+RTC_EXTERN NSString* RTCFileName(const char* filePath);
+
+// Some convenience macros.
+
+#define RTCLogString(format, ...)                                           \
+  [NSString stringWithFormat:@"(%@:%d %s): " format, RTCFileName(__FILE__), \
+                             __LINE__, __FUNCTION__, ##__VA_ARGS__]
+
+#define RTCLogFormat(severity, format, ...)                     \
+  do {                                                          \
+    NSString* log_string = RTCLogString(format, ##__VA_ARGS__); \
+    RTCLogEx(severity, log_string);                             \
+  } while (false)
+
+#define RTCLogVerbose(format, ...) \
+  RTCLogFormat(RTCLoggingSeverityVerbose, format, ##__VA_ARGS__)
+
+#define RTCLogInfo(format, ...) \
+  RTCLogFormat(RTCLoggingSeverityInfo, format, ##__VA_ARGS__)
+
+#define RTCLogWarning(format, ...) \
+  RTCLogFormat(RTCLoggingSeverityWarning, format, ##__VA_ARGS__)
+
+#define RTCLogError(format, ...) \
+  RTCLogFormat(RTCLoggingSeverityError, format, ##__VA_ARGS__)
+
+#if !defined(NDEBUG)
+#define RTCLogDebug(format, ...) RTCLogInfo(format, ##__VA_ARGS__)
+#else
+#define RTCLogDebug(format, ...) \
+  do {                           \
+  } while (false)
+#endif
+
+#define RTCLog(format, ...) RTCLogInfo(format, ##__VA_ARGS__)

+ 46 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMTLVideoView.h

@@ -0,0 +1,46 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoFrame.h"
+#import "RTCVideoRenderer.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * RTCMTLVideoView is thin wrapper around MTKView.
+ *
+ * It has id<RTCVideoRenderer> property that renders video frames in the view's
+ * bounds using Metal.
+ * NOTE: always check if metal is available on the running device via
+ * RTC_SUPPORTS_METAL macro before initializing this class.
+ */
+NS_CLASS_AVAILABLE_IOS(9)
+
+RTC_EXPORT
+@interface RTCMTLVideoView : UIView<RTCVideoRenderer>
+
+@property(nonatomic, weak) id<RTCVideoViewDelegate> delegate;
+
+@property(nonatomic) UIViewContentMode videoContentMode;
+
+/** @abstract Enables/disables rendering.
+ */
+@property(nonatomic, getter=isEnabled) BOOL enabled;
+
+/** @abstract Wrapped RTCVideoRotation, or nil.
+ */
+@property(nonatomic, nullable) NSValue* rotationOverride;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 28 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMacros.h

@@ -0,0 +1,28 @@
+/*
+ *  Copyright 2016 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef SDK_OBJC_BASE_RTCMACROS_H_
+#define SDK_OBJC_BASE_RTCMACROS_H_
+
+#define RTC_EXPORT __attribute__((visibility("default")))
+
+#if defined(__cplusplus)
+#define RTC_EXTERN extern "C" RTC_EXPORT
+#else
+#define RTC_EXTERN extern RTC_EXPORT
+#endif
+
+#ifdef __OBJC__
+#define RTC_FWD_DECL_OBJC_CLASS(classname) @class classname
+#else
+#define RTC_FWD_DECL_OBJC_CLASS(classname) typedef struct objc_object classname
+#endif
+
+#endif  // SDK_OBJC_BASE_RTCMACROS_H_

+ 54 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMediaConstraints.h

@@ -0,0 +1,54 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Constraint keys for media sources. */
+RTC_EXTERN NSString *const kRTCMediaConstraintsMinAspectRatio;
+RTC_EXTERN NSString *const kRTCMediaConstraintsMaxAspectRatio;
+RTC_EXTERN NSString *const kRTCMediaConstraintsMaxWidth;
+RTC_EXTERN NSString *const kRTCMediaConstraintsMinWidth;
+RTC_EXTERN NSString *const kRTCMediaConstraintsMaxHeight;
+RTC_EXTERN NSString *const kRTCMediaConstraintsMinHeight;
+RTC_EXTERN NSString *const kRTCMediaConstraintsMaxFrameRate;
+RTC_EXTERN NSString *const kRTCMediaConstraintsMinFrameRate;
+/** The value for this key should be a base64 encoded string containing
+ *  the data from the serialized configuration proto.
+ */
+RTC_EXTERN NSString *const kRTCMediaConstraintsAudioNetworkAdaptorConfig;
+
+/** Constraint keys for generating offers and answers. */
+RTC_EXTERN NSString *const kRTCMediaConstraintsIceRestart;
+RTC_EXTERN NSString *const kRTCMediaConstraintsOfferToReceiveAudio;
+RTC_EXTERN NSString *const kRTCMediaConstraintsOfferToReceiveVideo;
+RTC_EXTERN NSString *const kRTCMediaConstraintsVoiceActivityDetection;
+
+/** Constraint values for Boolean parameters. */
+RTC_EXTERN NSString *const kRTCMediaConstraintsValueTrue;
+RTC_EXTERN NSString *const kRTCMediaConstraintsValueFalse;
+
+RTC_EXPORT
+@interface RTCMediaConstraints : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Initialize with mandatory and/or optional constraints. */
+- (instancetype)
+    initWithMandatoryConstraints:(nullable NSDictionary<NSString *, NSString *> *)mandatory
+             optionalConstraints:(nullable NSDictionary<NSString *, NSString *> *)optional
+    NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 34 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMediaSource.h

@@ -0,0 +1,34 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+typedef NS_ENUM(NSInteger, RTCSourceState) {
+  RTCSourceStateInitializing,
+  RTCSourceStateLive,
+  RTCSourceStateEnded,
+  RTCSourceStateMuted,
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCMediaSource : NSObject
+
+/** The current state of the RTCMediaSource. */
+@property(nonatomic, readonly) RTCSourceState state;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 49 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMediaStream.h

@@ -0,0 +1,49 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class RTCAudioTrack;
+@class RTCPeerConnectionFactory;
+@class RTCVideoTrack;
+
+RTC_EXPORT
+@interface RTCMediaStream : NSObject
+
+/** The audio tracks in this stream. */
+@property(nonatomic, strong, readonly) NSArray<RTCAudioTrack *> *audioTracks;
+
+/** The video tracks in this stream. */
+@property(nonatomic, strong, readonly) NSArray<RTCVideoTrack *> *videoTracks;
+
+/** An identifier for this media stream. */
+@property(nonatomic, readonly) NSString *streamId;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Adds the given audio track to this media stream. */
+- (void)addAudioTrack:(RTCAudioTrack *)audioTrack;
+
+/** Adds the given video track to this media stream. */
+- (void)addVideoTrack:(RTCVideoTrack *)videoTrack;
+
+/** Removes the given audio track to this media stream. */
+- (void)removeAudioTrack:(RTCAudioTrack *)audioTrack;
+
+/** Removes the given video track to this media stream. */
+- (void)removeVideoTrack:(RTCVideoTrack *)videoTrack;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 50 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMediaStreamTrack.h

@@ -0,0 +1,50 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+/**
+ * Represents the state of the track. This exposes the same states in C++.
+ */
+typedef NS_ENUM(NSInteger, RTCMediaStreamTrackState) {
+  RTCMediaStreamTrackStateLive,
+  RTCMediaStreamTrackStateEnded
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXTERN NSString *const kRTCMediaStreamTrackKindAudio;
+RTC_EXTERN NSString *const kRTCMediaStreamTrackKindVideo;
+
+RTC_EXPORT
+@interface RTCMediaStreamTrack : NSObject
+
+/**
+ * The kind of track. For example, "audio" if this track represents an audio
+ * track and "video" if this track represents a video track.
+ */
+@property(nonatomic, readonly) NSString *kind;
+
+/** An identifier string. */
+@property(nonatomic, readonly) NSString *trackId;
+
+/** The enabled state of the track. */
+@property(nonatomic, assign) BOOL isEnabled;
+
+/** The state of the track. */
+@property(nonatomic, readonly) RTCMediaStreamTrackState readyState;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 23 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMetrics.h

@@ -0,0 +1,23 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCMetricsSampleInfo.h"
+
+/**
+ * Enables gathering of metrics (which can be fetched with
+ * RTCGetAndResetMetrics). Must be called before any other call into WebRTC.
+ */
+RTC_EXTERN void RTCEnableMetrics(void);
+
+/** Gets and clears native histograms. */
+RTC_EXTERN NSArray<RTCMetricsSampleInfo*>* RTCGetAndResetMetrics(void);

+ 48 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMetricsSampleInfo.h

@@ -0,0 +1,48 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCMetricsSampleInfo : NSObject
+
+/**
+ * Example of RTCMetricsSampleInfo:
+ * name: "WebRTC.Video.InputFramesPerSecond"
+ * min: 1
+ * max: 100
+ * bucketCount: 50
+ * samples: [29]:2 [30]:1
+ */
+
+/** The name of the histogram. */
+@property(nonatomic, readonly) NSString *name;
+
+/** The minimum bucket value. */
+@property(nonatomic, readonly) int min;
+
+/** The maximum bucket value. */
+@property(nonatomic, readonly) int max;
+
+/** The number of buckets. */
+@property(nonatomic, readonly) int bucketCount;
+
+/** A dictionary holding the samples <value, # of events>. */
+@property(nonatomic, readonly) NSDictionary<NSNumber *, NSNumber *> *samples;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 23 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMutableI420Buffer.h

@@ -0,0 +1,23 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+
+#import "RTCI420Buffer.h"
+#import "RTCMutableYUVPlanarBuffer.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Extension of the I420 buffer with mutable data access */
+RTC_EXPORT
+@protocol RTCMutableI420Buffer <RTCI420Buffer, RTCMutableYUVPlanarBuffer>
+@end
+
+NS_ASSUME_NONNULL_END

+ 27 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCMutableYUVPlanarBuffer.h

@@ -0,0 +1,27 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+
+#import "RTCYUVPlanarBuffer.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Extension of the YUV planar data buffer with mutable data access */
+RTC_EXPORT
+@protocol RTCMutableYUVPlanarBuffer <RTCYUVPlanarBuffer>
+
+@property(nonatomic, readonly) uint8_t *mutableDataY;
+@property(nonatomic, readonly) uint8_t *mutableDataU;
+@property(nonatomic, readonly) uint8_t *mutableDataV;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 23 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCNativeI420Buffer.h

@@ -0,0 +1,23 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+
+#import "RTCI420Buffer.h"
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** RTCI420Buffer implements the RTCI420Buffer protocol */
+RTC_EXPORT
+@interface RTCI420Buffer : NSObject<RTCI420Buffer>
+@end
+
+NS_ASSUME_NONNULL_END

+ 24 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCNativeMutableI420Buffer.h

@@ -0,0 +1,24 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+
+#import "RTCMacros.h"
+#import "RTCMutableI420Buffer.h"
+#import "RTCNativeI420Buffer.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Mutable version of RTCI420Buffer */
+RTC_EXPORT
+@interface RTCMutableI420Buffer : RTCI420Buffer<RTCMutableI420Buffer>
+@end
+
+NS_ASSUME_NONNULL_END

+ 316 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCPeerConnection.h

@@ -0,0 +1,316 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+@class RTCConfiguration;
+@class RTCDataChannel;
+@class RTCDataChannelConfiguration;
+@class RTCIceCandidate;
+@class RTCMediaConstraints;
+@class RTCMediaStream;
+@class RTCMediaStreamTrack;
+@class RTCPeerConnectionFactory;
+@class RTCRtpReceiver;
+@class RTCRtpSender;
+@class RTCRtpTransceiver;
+@class RTCRtpTransceiverInit;
+@class RTCSessionDescription;
+@class RTCLegacyStatsReport;
+
+typedef NS_ENUM(NSInteger, RTCRtpMediaType);
+
+NS_ASSUME_NONNULL_BEGIN
+
+extern NSString *const kRTCPeerConnectionErrorDomain;
+extern int const kRTCSessionDescriptionErrorCode;
+
+/** Represents the signaling state of the peer connection. */
+typedef NS_ENUM(NSInteger, RTCSignalingState) {
+  RTCSignalingStateStable,
+  RTCSignalingStateHaveLocalOffer,
+  RTCSignalingStateHaveLocalPrAnswer,
+  RTCSignalingStateHaveRemoteOffer,
+  RTCSignalingStateHaveRemotePrAnswer,
+  // Not an actual state, represents the total number of states.
+  RTCSignalingStateClosed,
+};
+
+/** Represents the ice connection state of the peer connection. */
+typedef NS_ENUM(NSInteger, RTCIceConnectionState) {
+  RTCIceConnectionStateNew,
+  RTCIceConnectionStateChecking,
+  RTCIceConnectionStateConnected,
+  RTCIceConnectionStateCompleted,
+  RTCIceConnectionStateFailed,
+  RTCIceConnectionStateDisconnected,
+  RTCIceConnectionStateClosed,
+  RTCIceConnectionStateCount,
+};
+
+/** Represents the ice gathering state of the peer connection. */
+typedef NS_ENUM(NSInteger, RTCIceGatheringState) {
+  RTCIceGatheringStateNew,
+  RTCIceGatheringStateGathering,
+  RTCIceGatheringStateComplete,
+};
+
+/** Represents the stats output level. */
+typedef NS_ENUM(NSInteger, RTCStatsOutputLevel) {
+  RTCStatsOutputLevelStandard,
+  RTCStatsOutputLevelDebug,
+};
+
+@class RTCPeerConnection;
+
+RTC_EXPORT
+@protocol RTCPeerConnectionDelegate <NSObject>
+
+/** Called when the SignalingState changed. */
+- (void)peerConnection:(RTCPeerConnection *)peerConnection
+    didChangeSignalingState:(RTCSignalingState)stateChanged;
+
+/** Called when media is received on a new stream from remote peer. */
+- (void)peerConnection:(RTCPeerConnection *)peerConnection didAddStream:(RTCMediaStream *)stream;
+
+/** Called when a remote peer closes a stream.
+ *  This is not called when RTCSdpSemanticsUnifiedPlan is specified.
+ */
+- (void)peerConnection:(RTCPeerConnection *)peerConnection didRemoveStream:(RTCMediaStream *)stream;
+
+/** Called when negotiation is needed, for example ICE has restarted. */
+- (void)peerConnectionShouldNegotiate:(RTCPeerConnection *)peerConnection;
+
+/** Called any time the IceConnectionState changes. */
+- (void)peerConnection:(RTCPeerConnection *)peerConnection
+    didChangeIceConnectionState:(RTCIceConnectionState)newState;
+
+/** Called any time the IceGatheringState changes. */
+- (void)peerConnection:(RTCPeerConnection *)peerConnection
+    didChangeIceGatheringState:(RTCIceGatheringState)newState;
+
+/** New ice candidate has been found. */
+- (void)peerConnection:(RTCPeerConnection *)peerConnection
+    didGenerateIceCandidate:(RTCIceCandidate *)candidate;
+
+/** Called when a group of local Ice candidates have been removed. */
+- (void)peerConnection:(RTCPeerConnection *)peerConnection
+    didRemoveIceCandidates:(NSArray<RTCIceCandidate *> *)candidates;
+
+/** New data channel has been opened. */
+- (void)peerConnection:(RTCPeerConnection *)peerConnection
+    didOpenDataChannel:(RTCDataChannel *)dataChannel;
+
+/** Called when signaling indicates a transceiver will be receiving media from
+ *  the remote endpoint.
+ *  This is only called with RTCSdpSemanticsUnifiedPlan specified.
+ */
+@optional
+- (void)peerConnection:(RTCPeerConnection *)peerConnection
+    didStartReceivingOnTransceiver:(RTCRtpTransceiver *)transceiver;
+
+/** Called when a receiver and its track are created. */
+@optional
+- (void)peerConnection:(RTCPeerConnection *)peerConnection
+        didAddReceiver:(RTCRtpReceiver *)rtpReceiver
+               streams:(NSArray<RTCMediaStream *> *)mediaStreams;
+
+/** Called when the receiver and its track are removed. */
+- (void)peerConnection:(RTCPeerConnection *)peerConnection
+     didRemoveReceiver:(RTCRtpReceiver *)rtpReceiver;
+
+@end
+
+RTC_EXPORT
+@interface RTCPeerConnection : NSObject
+
+/** The object that will be notifed about events such as state changes and
+ *  streams being added or removed.
+ */
+@property(nonatomic, weak, nullable) id<RTCPeerConnectionDelegate> delegate;
+/** This property is not available with RTCSdpSemanticsUnifiedPlan. Please use
+ *  |senders| instead.
+ */
+@property(nonatomic, readonly) NSArray<RTCMediaStream *> *localStreams;
+@property(nonatomic, readonly, nullable) RTCSessionDescription *localDescription;
+@property(nonatomic, readonly, nullable) RTCSessionDescription *remoteDescription;
+@property(nonatomic, readonly) RTCSignalingState signalingState;
+@property(nonatomic, readonly) RTCIceConnectionState iceConnectionState;
+@property(nonatomic, readonly) RTCIceGatheringState iceGatheringState;
+@property(nonatomic, readonly, copy) RTCConfiguration *configuration;
+
+/** Gets all RTCRtpSenders associated with this peer connection.
+ *  Note: reading this property returns different instances of RTCRtpSender.
+ *  Use isEqual: instead of == to compare RTCRtpSender instances.
+ */
+@property(nonatomic, readonly) NSArray<RTCRtpSender *> *senders;
+
+/** Gets all RTCRtpReceivers associated with this peer connection.
+ *  Note: reading this property returns different instances of RTCRtpReceiver.
+ *  Use isEqual: instead of == to compare RTCRtpReceiver instances.
+ */
+@property(nonatomic, readonly) NSArray<RTCRtpReceiver *> *receivers;
+
+/** Gets all RTCRtpTransceivers associated with this peer connection.
+ *  Note: reading this property returns different instances of
+ *  RTCRtpTransceiver. Use isEqual: instead of == to compare RTCRtpTransceiver
+ *  instances.
+ *  This is only available with RTCSdpSemanticsUnifiedPlan specified.
+ */
+@property(nonatomic, readonly) NSArray<RTCRtpTransceiver *> *transceivers;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Sets the PeerConnection's global configuration to |configuration|.
+ *  Any changes to STUN/TURN servers or ICE candidate policy will affect the
+ *  next gathering phase, and cause the next call to createOffer to generate
+ *  new ICE credentials. Note that the BUNDLE and RTCP-multiplexing policies
+ *  cannot be changed with this method.
+ */
+- (BOOL)setConfiguration:(RTCConfiguration *)configuration;
+
+/** Terminate all media and close the transport. */
+- (void)close;
+
+/** Provide a remote candidate to the ICE Agent. */
+- (void)addIceCandidate:(RTCIceCandidate *)candidate;
+
+/** Remove a group of remote candidates from the ICE Agent. */
+- (void)removeIceCandidates:(NSArray<RTCIceCandidate *> *)candidates;
+
+/** Add a new media stream to be sent on this peer connection.
+ *  This method is not supported with RTCSdpSemanticsUnifiedPlan. Please use
+ *  addTrack instead.
+ */
+- (void)addStream:(RTCMediaStream *)stream;
+
+/** Remove the given media stream from this peer connection.
+ *  This method is not supported with RTCSdpSemanticsUnifiedPlan. Please use
+ *  removeTrack instead.
+ */
+- (void)removeStream:(RTCMediaStream *)stream;
+
+/** Add a new media stream track to be sent on this peer connection, and return
+ *  the newly created RTCRtpSender. The RTCRtpSender will be associated with
+ *  the streams specified in the |streamIds| list.
+ *
+ *  Errors: If an error occurs, returns nil. An error can occur if:
+ *  - A sender already exists for the track.
+ *  - The peer connection is closed.
+ */
+- (RTCRtpSender *)addTrack:(RTCMediaStreamTrack *)track streamIds:(NSArray<NSString *> *)streamIds;
+
+/** With PlanB semantics, removes an RTCRtpSender from this peer connection.
+ *
+ *  With UnifiedPlan semantics, sets sender's track to null and removes the
+ *  send component from the associated RTCRtpTransceiver's direction.
+ *
+ *  Returns YES on success.
+ */
+- (BOOL)removeTrack:(RTCRtpSender *)sender;
+
+/** addTransceiver creates a new RTCRtpTransceiver and adds it to the set of
+ *  transceivers. Adding a transceiver will cause future calls to CreateOffer
+ *  to add a media description for the corresponding transceiver.
+ *
+ *  The initial value of |mid| in the returned transceiver is nil. Setting a
+ *  new session description may change it to a non-nil value.
+ *
+ *  https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtransceiver
+ *
+ *  Optionally, an RtpTransceiverInit structure can be specified to configure
+ *  the transceiver from construction. If not specified, the transceiver will
+ *  default to having a direction of kSendRecv and not be part of any streams.
+ *
+ *  These methods are only available when Unified Plan is enabled (see
+ *  RTCConfiguration).
+ */
+
+/** Adds a transceiver with a sender set to transmit the given track. The kind
+ *  of the transceiver (and sender/receiver) will be derived from the kind of
+ *  the track.
+ */
+- (RTCRtpTransceiver *)addTransceiverWithTrack:(RTCMediaStreamTrack *)track;
+- (RTCRtpTransceiver *)addTransceiverWithTrack:(RTCMediaStreamTrack *)track
+                                          init:(RTCRtpTransceiverInit *)init;
+
+/** Adds a transceiver with the given kind. Can either be RTCRtpMediaTypeAudio
+ *  or RTCRtpMediaTypeVideo.
+ */
+- (RTCRtpTransceiver *)addTransceiverOfType:(RTCRtpMediaType)mediaType;
+- (RTCRtpTransceiver *)addTransceiverOfType:(RTCRtpMediaType)mediaType
+                                       init:(RTCRtpTransceiverInit *)init;
+
+/** Generate an SDP offer. */
+- (void)offerForConstraints:(RTCMediaConstraints *)constraints
+          completionHandler:(nullable void (^)(RTCSessionDescription *_Nullable sdp,
+                                               NSError *_Nullable error))completionHandler;
+
+/** Generate an SDP answer. */
+- (void)answerForConstraints:(RTCMediaConstraints *)constraints
+           completionHandler:(nullable void (^)(RTCSessionDescription *_Nullable sdp,
+                                                NSError *_Nullable error))completionHandler;
+
+/** Apply the supplied RTCSessionDescription as the local description. */
+- (void)setLocalDescription:(RTCSessionDescription *)sdp
+          completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler;
+
+/** Apply the supplied RTCSessionDescription as the remote description. */
+- (void)setRemoteDescription:(RTCSessionDescription *)sdp
+           completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler;
+
+/** Limits the bandwidth allocated for all RTP streams sent by this
+ *  PeerConnection. Nil parameters will be unchanged. Setting
+ * |currentBitrateBps| will force the available bitrate estimate to the given
+ *  value. Returns YES if the parameters were successfully updated.
+ */
+- (BOOL)setBweMinBitrateBps:(nullable NSNumber *)minBitrateBps
+          currentBitrateBps:(nullable NSNumber *)currentBitrateBps
+              maxBitrateBps:(nullable NSNumber *)maxBitrateBps;
+
+/** Start or stop recording an Rtc EventLog. */
+- (BOOL)startRtcEventLogWithFilePath:(NSString *)filePath maxSizeInBytes:(int64_t)maxSizeInBytes;
+- (void)stopRtcEventLog;
+
+@end
+
+@interface RTCPeerConnection (Media)
+
+/** Create an RTCRtpSender with the specified kind and media stream ID.
+ *  See RTCMediaStreamTrack.h for available kinds.
+ *  This method is not supported with RTCSdpSemanticsUnifiedPlan. Please use
+ *  addTransceiver instead.
+ */
+- (RTCRtpSender *)senderWithKind:(NSString *)kind streamId:(NSString *)streamId;
+
+@end
+
+@interface RTCPeerConnection (DataChannel)
+
+/** Create a new data channel with the given label and configuration. */
+- (nullable RTCDataChannel *)dataChannelForLabel:(NSString *)label
+                                   configuration:(RTCDataChannelConfiguration *)configuration;
+
+@end
+
+@interface RTCPeerConnection (Stats)
+
+/** Gather stats for the given RTCMediaStreamTrack. If |mediaStreamTrack| is nil
+ *  statistics are gathered for all tracks.
+ */
+- (void)statsForTrack:(nullable RTCMediaStreamTrack *)mediaStreamTrack
+     statsOutputLevel:(RTCStatsOutputLevel)statsOutputLevel
+    completionHandler:(nullable void (^)(NSArray<RTCLegacyStatsReport *> *stats))completionHandler;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 81 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCPeerConnectionFactory.h

@@ -0,0 +1,81 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class RTCAudioSource;
+@class RTCAudioTrack;
+@class RTCConfiguration;
+@class RTCMediaConstraints;
+@class RTCMediaStream;
+@class RTCPeerConnection;
+@class RTCVideoSource;
+@class RTCVideoTrack;
+@class RTCPeerConnectionFactoryOptions;
+@protocol RTCPeerConnectionDelegate;
+@protocol RTCVideoDecoderFactory;
+@protocol RTCVideoEncoderFactory;
+
+RTC_EXPORT
+@interface RTCPeerConnectionFactory : NSObject
+
+/* Initialize object with default H264 video encoder/decoder factories */
+- (instancetype)init;
+
+/* Initialize object with injectable video encoder/decoder factories */
+- (instancetype)initWithEncoderFactory:(nullable id<RTCVideoEncoderFactory>)encoderFactory
+                        decoderFactory:(nullable id<RTCVideoDecoderFactory>)decoderFactory;
+
+/** Initialize an RTCAudioSource with constraints. */
+- (RTCAudioSource *)audioSourceWithConstraints:(nullable RTCMediaConstraints *)constraints;
+
+/** Initialize an RTCAudioTrack with an id. Convenience ctor to use an audio source with no
+ *  constraints.
+ */
+- (RTCAudioTrack *)audioTrackWithTrackId:(NSString *)trackId;
+
+/** Initialize an RTCAudioTrack with a source and an id. */
+- (RTCAudioTrack *)audioTrackWithSource:(RTCAudioSource *)source trackId:(NSString *)trackId;
+
+/** Initialize a generic RTCVideoSource. The RTCVideoSource should be passed to a RTCVideoCapturer
+ *  implementation, e.g. RTCCameraVideoCapturer, in order to produce frames.
+ */
+- (RTCVideoSource *)videoSource;
+
+/** Initialize an RTCVideoTrack with a source and an id. */
+- (RTCVideoTrack *)videoTrackWithSource:(RTCVideoSource *)source trackId:(NSString *)trackId;
+
+/** Initialize an RTCMediaStream with an id. */
+- (RTCMediaStream *)mediaStreamWithStreamId:(NSString *)streamId;
+
+/** Initialize an RTCPeerConnection with a configuration, constraints, and
+ *  delegate.
+ */
+- (RTCPeerConnection *)peerConnectionWithConfiguration:(RTCConfiguration *)configuration
+                                           constraints:(RTCMediaConstraints *)constraints
+                                              delegate:
+                                                  (nullable id<RTCPeerConnectionDelegate>)delegate;
+
+/** Set the options to be used for subsequently created RTCPeerConnections */
+- (void)setOptions:(nonnull RTCPeerConnectionFactoryOptions *)options;
+
+/** Start an AecDump recording. This API call will likely change in the future. */
+- (BOOL)startAecDumpWithFilePath:(NSString *)filePath maxSizeInBytes:(int64_t)maxSizeInBytes;
+
+/* Stop an active AecDump recording */
+- (void)stopAecDump;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 42 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCPeerConnectionFactoryOptions.h

@@ -0,0 +1,42 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCPeerConnectionFactoryOptions : NSObject
+
+@property(nonatomic, assign) BOOL disableEncryption;
+
+@property(nonatomic, assign) BOOL disableNetworkMonitor;
+
+@property(nonatomic, assign) BOOL ignoreLoopbackNetworkAdapter;
+
+@property(nonatomic, assign) BOOL ignoreVPNNetworkAdapter;
+
+@property(nonatomic, assign) BOOL ignoreCellularNetworkAdapter;
+
+@property(nonatomic, assign) BOOL ignoreWiFiNetworkAdapter;
+
+@property(nonatomic, assign) BOOL ignoreEthernetNetworkAdapter;
+
+@property(nonatomic, assign) BOOL enableAes128Sha1_32CryptoCipher;
+
+@property(nonatomic, assign) BOOL enableGcmCryptoSuites;
+
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 30 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtcpParameters.h

@@ -0,0 +1,30 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCRtcpParameters : NSObject
+
+/** The Canonical Name used by RTCP. */
+@property(nonatomic, readonly, copy) NSString *cname;
+
+/** Whether reduced size RTCP is configured or compound RTCP. */
+@property(nonatomic, assign) BOOL isReducedSize;
+
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 73 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpCodecParameters.h

@@ -0,0 +1,73 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXTERN const NSString *const kRTCRtxCodecName;
+RTC_EXTERN const NSString *const kRTCRedCodecName;
+RTC_EXTERN const NSString *const kRTCUlpfecCodecName;
+RTC_EXTERN const NSString *const kRTCFlexfecCodecName;
+RTC_EXTERN const NSString *const kRTCOpusCodecName;
+RTC_EXTERN const NSString *const kRTCIsacCodecName;
+RTC_EXTERN const NSString *const kRTCL16CodecName;
+RTC_EXTERN const NSString *const kRTCG722CodecName;
+RTC_EXTERN const NSString *const kRTCIlbcCodecName;
+RTC_EXTERN const NSString *const kRTCPcmuCodecName;
+RTC_EXTERN const NSString *const kRTCPcmaCodecName;
+RTC_EXTERN const NSString *const kRTCDtmfCodecName;
+RTC_EXTERN const NSString *const kRTCComfortNoiseCodecName;
+RTC_EXTERN const NSString *const kRTCVp8CodecName;
+RTC_EXTERN const NSString *const kRTCVp9CodecName;
+RTC_EXTERN const NSString *const kRTCH264CodecName;
+
+/** Defined in http://w3c.github.io/webrtc-pc/#idl-def-RTCRtpCodecParameters */
+RTC_EXPORT
+@interface RTCRtpCodecParameters : NSObject
+
+/** The RTP payload type. */
+@property(nonatomic, assign) int payloadType;
+
+/**
+ * The codec MIME subtype. Valid types are listed in:
+ * http://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-2
+ *
+ * Several supported types are represented by the constants above.
+ */
+@property(nonatomic, readonly, nonnull) NSString *name;
+
+/**
+ * The media type of this codec. Equivalent to MIME top-level type.
+ *
+ * Valid values are kRTCMediaStreamTrackKindAudio and
+ * kRTCMediaStreamTrackKindVideo.
+ */
+@property(nonatomic, readonly, nonnull) NSString *kind;
+
+/** The codec clock rate expressed in Hertz. */
+@property(nonatomic, readonly, nullable) NSNumber *clockRate;
+
+/**
+ * The number of channels (mono=1, stereo=2).
+ * Set to null for video codecs.
+ **/
+@property(nonatomic, readonly, nullable) NSNumber *numChannels;
+
+/** The "format specific parameters" field from the "a=fmtp" line in the SDP */
+@property(nonatomic, readonly, nonnull) NSDictionary *parameters;
+
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 42 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpEncodingParameters.h

@@ -0,0 +1,42 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCRtpEncodingParameters : NSObject
+
+/** Controls whether the encoding is currently transmitted. */
+@property(nonatomic, assign) BOOL isActive;
+
+/** The maximum bitrate to use for the encoding, or nil if there is no
+ *  limit.
+ */
+@property(nonatomic, copy, nullable) NSNumber *maxBitrateBps;
+
+/** The minimum bitrate to use for the encoding, or nil if there is no
+ *  limit.
+ *
+ *  Not implemented.
+ */
+@property(nonatomic, copy, nullable) NSNumber *minBitrateBps;
+
+/** The SSRC being used by this encoding. */
+@property(nonatomic, readonly, nullable) NSNumber *ssrc;
+
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 28 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpFragmentationHeader.h

@@ -0,0 +1,28 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Information for header. Corresponds to webrtc::RTPFragmentationHeader. */
+RTC_EXPORT
+@interface RTCRtpFragmentationHeader : NSObject
+
+@property(nonatomic, strong) NSArray<NSNumber *> *fragmentationOffset;
+@property(nonatomic, strong) NSArray<NSNumber *> *fragmentationLength;
+@property(nonatomic, strong) NSArray<NSNumber *> *fragmentationTimeDiff;
+@property(nonatomic, strong) NSArray<NSNumber *> *fragmentationPlType;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 33 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpHeaderExtension.h

@@ -0,0 +1,33 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCRtpHeaderExtension : NSObject
+
+/** The URI of the RTP header extension, as defined in RFC5285. */
+@property(nonatomic, readonly, copy) NSString *uri;
+
+/** The value put in the RTP packet to identify the header extension. */
+@property(nonatomic, readonly) int id;
+
+/** Whether the header extension is encrypted or not. */
+@property(nonatomic, readonly, getter=isEncrypted) BOOL encrypted;
+
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 43 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpParameters.h

@@ -0,0 +1,43 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCRtcpParameters.h"
+#import "RTCRtpCodecParameters.h"
+#import "RTCRtpEncodingParameters.h"
+#import "RTCRtpHeaderExtension.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCRtpParameters : NSObject
+
+/** A unique identifier for the last set of parameters applied. */
+@property(nonatomic, copy) NSString *transactionId;
+
+/** Parameters used for RTCP. */
+@property(nonatomic, readonly, copy) RTCRtcpParameters *rtcp;
+
+/** An array containing parameters for RTP header extensions. */
+@property(nonatomic, readonly, copy) NSArray<RTCRtpHeaderExtension *> *headerExtensions;
+
+/** The currently active encodings in the order of preference. */
+@property(nonatomic, copy) NSArray<RTCRtpEncodingParameters *> *encodings;
+
+/** The negotiated set of send codecs in order of preference. */
+@property(nonatomic, copy) NSArray<RTCRtpCodecParameters *> *codecs;
+
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 82 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpReceiver.h

@@ -0,0 +1,82 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCMediaStreamTrack.h"
+#import "RTCRtpParameters.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Represents the media type of the RtpReceiver. */
+typedef NS_ENUM(NSInteger, RTCRtpMediaType) {
+  RTCRtpMediaTypeAudio,
+  RTCRtpMediaTypeVideo,
+  RTCRtpMediaTypeData,
+};
+
+@class RTCRtpReceiver;
+
+RTC_EXPORT
+@protocol RTCRtpReceiverDelegate <NSObject>
+
+/** Called when the first RTP packet is received.
+ *
+ *  Note: Currently if there are multiple RtpReceivers of the same media type,
+ *  they will all call OnFirstPacketReceived at once.
+ *
+ *  For example, if we create three audio receivers, A/B/C, they will listen to
+ *  the same signal from the underneath network layer. Whenever the first audio packet
+ *  is received, the underneath signal will be fired. All the receivers A/B/C will be
+ *  notified and the callback of the receiver's delegate will be called.
+ *
+ *  The process is the same for video receivers.
+ */
+- (void)rtpReceiver:(RTCRtpReceiver *)rtpReceiver
+    didReceiveFirstPacketForMediaType:(RTCRtpMediaType)mediaType;
+
+@end
+
+RTC_EXPORT
+@protocol RTCRtpReceiver <NSObject>
+
+/** A unique identifier for this receiver. */
+@property(nonatomic, readonly) NSString *receiverId;
+
+/** The currently active RTCRtpParameters, as defined in
+ *  https://www.w3.org/TR/webrtc/#idl-def-RTCRtpParameters.
+ *
+ *  The WebRTC specification only defines RTCRtpParameters in terms of senders,
+ *  but this API also applies them to receivers, similar to ORTC:
+ *  http://ortc.org/wp-content/uploads/2016/03/ortc.html#rtcrtpparameters*.
+ */
+@property(nonatomic, readonly) RTCRtpParameters *parameters;
+
+/** The RTCMediaStreamTrack associated with the receiver.
+ *  Note: reading this property returns a new instance of
+ *  RTCMediaStreamTrack. Use isEqual: instead of == to compare
+ *  RTCMediaStreamTrack instances.
+ */
+@property(nonatomic, readonly, nullable) RTCMediaStreamTrack *track;
+
+/** The delegate for this RtpReceiver. */
+@property(nonatomic, weak) id<RTCRtpReceiverDelegate> delegate;
+
+@end
+
+RTC_EXPORT
+@interface RTCRtpReceiver : NSObject <RTCRtpReceiver>
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 50 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpSender.h

@@ -0,0 +1,50 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCDtmfSender.h"
+#import "RTCMacros.h"
+#import "RTCMediaStreamTrack.h"
+#import "RTCRtpParameters.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@protocol RTCRtpSender <NSObject>
+
+/** A unique identifier for this sender. */
+@property(nonatomic, readonly) NSString *senderId;
+
+/** The currently active RTCRtpParameters, as defined in
+ *  https://www.w3.org/TR/webrtc/#idl-def-RTCRtpParameters.
+ */
+@property(nonatomic, copy) RTCRtpParameters *parameters;
+
+/** The RTCMediaStreamTrack associated with the sender.
+ *  Note: reading this property returns a new instance of
+ *  RTCMediaStreamTrack. Use isEqual: instead of == to compare
+ *  RTCMediaStreamTrack instances.
+ */
+@property(nonatomic, copy, nullable) RTCMediaStreamTrack *track;
+
+/** The RTCDtmfSender accociated with the RTP sender. */
+@property(nonatomic, readonly, nullable) id<RTCDtmfSender> dtmfSender;
+
+@end
+
+RTC_EXPORT
+@interface RTCRtpSender : NSObject <RTCRtpSender>
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 128 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCRtpTransceiver.h

@@ -0,0 +1,128 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCRtpReceiver.h"
+#import "RTCRtpSender.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverdirection */
+typedef NS_ENUM(NSInteger, RTCRtpTransceiverDirection) {
+  RTCRtpTransceiverDirectionSendRecv,
+  RTCRtpTransceiverDirectionSendOnly,
+  RTCRtpTransceiverDirectionRecvOnly,
+  RTCRtpTransceiverDirectionInactive,
+};
+
+/** Structure for initializing an RTCRtpTransceiver in a call to
+ *  RTCPeerConnection.addTransceiver.
+ *  https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit
+ */
+@interface RTCRtpTransceiverInit : NSObject
+
+/** Direction of the RTCRtpTransceiver. See RTCRtpTransceiver.direction. */
+@property(nonatomic) RTCRtpTransceiverDirection direction;
+
+/** The added RTCRtpTransceiver will be added to these streams. */
+@property(nonatomic) NSArray<NSString *> *streamIds;
+
+/** TODO(bugs.webrtc.org/7600): Not implemented. */
+@property(nonatomic) NSArray<RTCRtpEncodingParameters *> *sendEncodings;
+
+@end
+
+@class RTCRtpTransceiver;
+
+/** The RTCRtpTransceiver maps to the RTCRtpTransceiver defined by the WebRTC
+ *  specification. A transceiver represents a combination of an RTCRtpSender
+ *  and an RTCRtpReceiver that share a common mid. As defined in JSEP, an
+ *  RTCRtpTransceiver is said to be associated with a media description if its
+ *  mid property is non-nil; otherwise, it is said to be disassociated.
+ *  JSEP: https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-24
+ *
+ *  Note that RTCRtpTransceivers are only supported when using
+ *  RTCPeerConnection with Unified Plan SDP.
+ *
+ *  WebRTC specification for RTCRtpTransceiver, the JavaScript analog:
+ *  https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiver
+ */
+RTC_EXPORT
+@protocol RTCRtpTransceiver <NSObject>
+
+/** Media type of the transceiver. The sender and receiver will also have this
+ *  type.
+ */
+@property(nonatomic, readonly) RTCRtpMediaType mediaType;
+
+/** The mid attribute is the mid negotiated and present in the local and
+ *  remote descriptions. Before negotiation is complete, the mid value may be
+ *  nil. After rollbacks, the value may change from a non-nil value to nil.
+ *  https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiver-mid
+ */
+@property(nonatomic, readonly) NSString *mid;
+
+/** The sender attribute exposes the RTCRtpSender corresponding to the RTP
+ *  media that may be sent with the transceiver's mid. The sender is always
+ *  present, regardless of the direction of media.
+ *  https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiver-sender
+ */
+@property(nonatomic, readonly) RTCRtpSender *sender;
+
+/** The receiver attribute exposes the RTCRtpReceiver corresponding to the RTP
+ *  media that may be received with the transceiver's mid. The receiver is
+ *  always present, regardless of the direction of media.
+ *  https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiver-receiver
+ */
+@property(nonatomic, readonly) RTCRtpReceiver *receiver;
+
+/** The isStopped attribute indicates that the sender of this transceiver will
+ *  no longer send, and that the receiver will no longer receive. It is true if
+ *  either stop has been called or if setting the local or remote description
+ *  has caused the RTCRtpTransceiver to be stopped.
+ *  https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiver-stopped
+ */
+@property(nonatomic, readonly) BOOL isStopped;
+
+/** The direction attribute indicates the preferred direction of this
+ *  transceiver, which will be used in calls to createOffer and createAnswer.
+ *  An update of directionality does not take effect immediately. Instead,
+ *  future calls to createOffer and createAnswer mark the corresponding media
+ *  descriptions as sendrecv, sendonly, recvonly, or inactive.
+ *  https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiver-direction
+ */
+@property(nonatomic) RTCRtpTransceiverDirection direction;
+
+/** The currentDirection attribute indicates the current direction negotiated
+ *  for this transceiver. If this transceiver has never been represented in an
+ *  offer/answer exchange, or if the transceiver is stopped, the value is not
+ *  present and this method returns NO.
+ *  https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiver-currentdirection
+ */
+- (BOOL)currentDirection:(RTCRtpTransceiverDirection *)currentDirectionOut;
+
+/** The stop method irreversibly stops the RTCRtpTransceiver. The sender of
+ *  this transceiver will no longer send, the receiver will no longer receive.
+ *  https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiver-stop
+ */
+- (void)stop;
+
+@end
+
+RTC_EXPORT
+@interface RTCRtpTransceiver : NSObject <RTCRtpTransceiver>
+
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 20 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCSSLAdapter.h

@@ -0,0 +1,20 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+/**
+ * Initialize and clean up the SSL library. Failure is fatal. These call the
+ * corresponding functions in webrtc/rtc_base/ssladapter.h.
+ */
+RTC_EXTERN BOOL RTCInitializeSSL(void);
+RTC_EXTERN BOOL RTCCleanupSSL(void);

+ 47 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCSessionDescription.h

@@ -0,0 +1,47 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+/**
+ * Represents the session description type. This exposes the same types that are
+ * in C++, which doesn't include the rollback type that is in the W3C spec.
+ */
+typedef NS_ENUM(NSInteger, RTCSdpType) {
+  RTCSdpTypeOffer,
+  RTCSdpTypePrAnswer,
+  RTCSdpTypeAnswer,
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+@interface RTCSessionDescription : NSObject
+
+/** The type of session description. */
+@property(nonatomic, readonly) RTCSdpType type;
+
+/** The SDP string representation of this session description. */
+@property(nonatomic, readonly) NSString *sdp;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Initialize a session description with a type and SDP string. */
+- (instancetype)initWithType:(RTCSdpType)type sdp:(NSString *)sdp NS_DESIGNATED_INITIALIZER;
+
++ (NSString *)stringForType:(RTCSdpType)type;
+
++ (RTCSdpType)typeForString:(NSString *)string;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 21 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCTracing.h

@@ -0,0 +1,21 @@
+/*
+ *  Copyright 2016 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+RTC_EXTERN void RTCSetupInternalTracer(void);
+/** Starts capture to specified file. Must be a valid writable path.
+ *  Returns YES if capture starts.
+ */
+RTC_EXTERN BOOL RTCStartInternalCapture(NSString* filePath);
+RTC_EXTERN void RTCStopInternalCapture(void);
+RTC_EXTERN void RTCShutdownInternalTracer(void);

+ 33 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoCapturer.h

@@ -0,0 +1,33 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import "RTCVideoFrame.h"
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class RTCVideoCapturer;
+
+RTC_EXPORT
+@protocol RTCVideoCapturerDelegate <NSObject>
+- (void)capturer:(RTCVideoCapturer *)capturer didCaptureVideoFrame:(RTCVideoFrame *)frame;
+@end
+
+RTC_EXPORT
+@interface RTCVideoCapturer : NSObject
+
+@property(nonatomic, weak) id<RTCVideoCapturerDelegate> delegate;
+
+- (instancetype)initWithDelegate:(id<RTCVideoCapturerDelegate>)delegate;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 16 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoCodecConstants.h

@@ -0,0 +1,16 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+RTC_EXPORT extern NSString *const kRTCVideoCodecVp8Name;
+RTC_EXPORT extern NSString *const kRTCVideoCodecVp9Name;

+ 36 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoCodecInfo.h

@@ -0,0 +1,36 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Holds information to identify a codec. Corresponds to webrtc::SdpVideoFormat. */
+RTC_EXPORT
+@interface RTCVideoCodecInfo : NSObject <NSCoding>
+
+- (instancetype)init NS_UNAVAILABLE;
+
+- (instancetype)initWithName:(NSString *)name;
+
+- (instancetype)initWithName:(NSString *)name
+                  parameters:(nullable NSDictionary<NSString *, NSString *> *)parameters
+    NS_DESIGNATED_INITIALIZER;
+
+- (BOOL)isEqualToCodecInfo:(RTCVideoCodecInfo *)info;
+
+@property(nonatomic, readonly) NSString *name;
+@property(nonatomic, readonly) NSDictionary<NSString *, NSString *> *parameters;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 45 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoder.h

@@ -0,0 +1,45 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCCodecSpecificInfo.h"
+#import "RTCEncodedImage.h"
+#import "RTCMacros.h"
+#import "RTCVideoEncoderSettings.h"
+#import "RTCVideoFrame.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Callback block for decoder. */
+typedef void (^RTCVideoDecoderCallback)(RTCVideoFrame *frame);
+
+/** Protocol for decoder implementations. */
+RTC_EXPORT
+@protocol RTCVideoDecoder <NSObject>
+
+- (void)setCallback:(RTCVideoDecoderCallback)callback;
+- (NSInteger)startDecodeWithSettings:(RTCVideoEncoderSettings *)settings
+                       numberOfCores:(int)numberOfCores
+    DEPRECATED_MSG_ATTRIBUTE("use startDecodeWithNumberOfCores: instead");
+- (NSInteger)releaseDecoder;
+- (NSInteger)decode:(RTCEncodedImage *)encodedImage
+        missingFrames:(BOOL)missingFrames
+    codecSpecificInfo:(nullable id<RTCCodecSpecificInfo>)info
+         renderTimeMs:(int64_t)renderTimeMs;
+- (NSString *)implementationName;
+
+// TODO(andersc): Make non-optional when `startDecodeWithSettings:numberOfCores:` is removed.
+@optional
+- (NSInteger)startDecodeWithNumberOfCores:(int)numberOfCores;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 28 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoderFactory.h

@@ -0,0 +1,28 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoCodecInfo.h"
+#import "RTCVideoDecoder.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** RTCVideoDecoderFactory is an Objective-C version of webrtc::VideoDecoderFactory. */
+RTC_EXPORT
+@protocol RTCVideoDecoderFactory <NSObject>
+
+- (nullable id<RTCVideoDecoder>)createDecoder:(RTCVideoCodecInfo *)info;
+- (NSArray<RTCVideoCodecInfo *> *)supportedCodecs;  // TODO(andersc): "supportedFormats" instead?
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 18 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoderFactoryH264.h

@@ -0,0 +1,18 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoDecoderFactory.h"
+
+RTC_EXPORT
+@interface RTCVideoDecoderFactoryH264 : NSObject <RTCVideoDecoderFactory>
+@end

+ 18 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoderH264.h

@@ -0,0 +1,18 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoDecoder.h"
+
+RTC_EXPORT
+@interface RTCVideoDecoderH264 : NSObject <RTCVideoDecoder>
+@end

+ 25 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoderVP8.h

@@ -0,0 +1,25 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoDecoder.h"
+
+RTC_EXPORT
+@interface RTCVideoDecoderVP8 : NSObject
+
+/* This returns a VP8 decoder that can be returned from a RTCVideoDecoderFactory injected into
+ * RTCPeerConnectionFactory. Even though it implements the RTCVideoDecoder protocol, it can not be
+ * used independently from the RTCPeerConnectionFactory.
+ */
++ (id<RTCVideoDecoder>)vp8Decoder;
+
+@end

+ 25 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoDecoderVP9.h

@@ -0,0 +1,25 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoDecoder.h"
+
+RTC_EXPORT
+@interface RTCVideoDecoderVP9 : NSObject
+
+/* This returns a VP9 decoder that can be returned from a RTCVideoDecoderFactory injected into
+ * RTCPeerConnectionFactory. Even though it implements the RTCVideoDecoder protocol, it can not be
+ * used independently from the RTCPeerConnectionFactory.
+ */
++ (id<RTCVideoDecoder>)vp9Decoder;
+
+@end

+ 49 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoder.h

@@ -0,0 +1,49 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCCodecSpecificInfo.h"
+#import "RTCEncodedImage.h"
+#import "RTCMacros.h"
+#import "RTCRtpFragmentationHeader.h"
+#import "RTCVideoEncoderQpThresholds.h"
+#import "RTCVideoEncoderSettings.h"
+#import "RTCVideoFrame.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Callback block for encoder. */
+typedef BOOL (^RTCVideoEncoderCallback)(RTCEncodedImage *frame,
+                                        id<RTCCodecSpecificInfo> info,
+                                        RTCRtpFragmentationHeader *header);
+
+/** Protocol for encoder implementations. */
+RTC_EXPORT
+@protocol RTCVideoEncoder <NSObject>
+
+- (void)setCallback:(RTCVideoEncoderCallback)callback;
+- (NSInteger)startEncodeWithSettings:(RTCVideoEncoderSettings *)settings
+                       numberOfCores:(int)numberOfCores;
+- (NSInteger)releaseEncoder;
+- (NSInteger)encode:(RTCVideoFrame *)frame
+    codecSpecificInfo:(nullable id<RTCCodecSpecificInfo>)info
+           frameTypes:(NSArray<NSNumber *> *)frameTypes;
+- (int)setBitrate:(uint32_t)bitrateKbit framerate:(uint32_t)framerate;
+- (NSString *)implementationName;
+
+/** Returns QP scaling settings for encoder. The quality scaler adjusts the resolution in order to
+ *  keep the QP from the encoded images within the given range. Returning nil from this function
+ *  disables quality scaling. */
+- (nullable RTCVideoEncoderQpThresholds *)scalingSettings;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 28 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderFactory.h

@@ -0,0 +1,28 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoCodecInfo.h"
+#import "RTCVideoEncoder.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** RTCVideoEncoderFactory is an Objective-C version of webrtc::VideoEncoderFactory. */
+RTC_EXPORT
+@protocol RTCVideoEncoderFactory <NSObject>
+
+- (nullable id<RTCVideoEncoder>)createEncoder:(RTCVideoCodecInfo *)info;
+- (NSArray<RTCVideoCodecInfo *> *)supportedCodecs;  // TODO(andersc): "supportedFormats" instead?
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 18 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderFactoryH264.h

@@ -0,0 +1,18 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoEncoderFactory.h"
+
+RTC_EXPORT
+@interface RTCVideoEncoderFactoryH264 : NSObject <RTCVideoEncoderFactory>
+@end

+ 22 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderH264.h

@@ -0,0 +1,22 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoCodecInfo.h"
+#import "RTCVideoEncoder.h"
+
+RTC_EXPORT
+@interface RTCVideoEncoderH264 : NSObject <RTCVideoEncoder>
+
+- (instancetype)initWithCodecInfo:(RTCVideoCodecInfo *)codecInfo;
+
+@end

+ 28 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderQpThresholds.h

@@ -0,0 +1,28 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** QP thresholds for encoder. Corresponds to webrtc::VideoEncoder::QpThresholds. */
+RTC_EXPORT
+@interface RTCVideoEncoderQpThresholds : NSObject
+
+- (instancetype)initWithThresholdsLow:(NSInteger)low high:(NSInteger)high;
+
+@property(nonatomic, readonly) NSInteger low;
+@property(nonatomic, readonly) NSInteger high;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 43 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderSettings.h

@@ -0,0 +1,43 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSUInteger, RTCVideoCodecMode) {
+  RTCVideoCodecModeRealtimeVideo,
+  RTCVideoCodecModeScreensharing,
+};
+
+/** Settings for encoder. Corresponds to webrtc::VideoCodec. */
+RTC_EXPORT
+@interface RTCVideoEncoderSettings : NSObject
+
+@property(nonatomic, strong) NSString *name;
+
+@property(nonatomic, assign) unsigned short width;
+@property(nonatomic, assign) unsigned short height;
+
+@property(nonatomic, assign) unsigned int startBitrate;  // kilobits/sec.
+@property(nonatomic, assign) unsigned int maxBitrate;
+@property(nonatomic, assign) unsigned int minBitrate;
+@property(nonatomic, assign) unsigned int targetBitrate;
+
+@property(nonatomic, assign) uint32_t maxFramerate;
+
+@property(nonatomic, assign) unsigned int qpMax;
+@property(nonatomic, assign) RTCVideoCodecMode mode;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 25 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderVP8.h

@@ -0,0 +1,25 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoEncoder.h"
+
+RTC_EXPORT
+@interface RTCVideoEncoderVP8 : NSObject
+
+/* This returns a VP8 encoder that can be returned from a RTCVideoEncoderFactory injected into
+ * RTCPeerConnectionFactory. Even though it implements the RTCVideoEncoder protocol, it can not be
+ * used independently from the RTCPeerConnectionFactory.
+ */
++ (id<RTCVideoEncoder>)vp8Encoder;
+
+@end

+ 25 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoEncoderVP9.h

@@ -0,0 +1,25 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoEncoder.h"
+
+RTC_EXPORT
+@interface RTCVideoEncoderVP9 : NSObject
+
+/* This returns a VP9 encoder that can be returned from a RTCVideoEncoderFactory injected into
+ * RTCPeerConnectionFactory. Even though it implements the RTCVideoEncoder protocol, it can not be
+ * used independently from the RTCPeerConnectionFactory.
+ */
++ (id<RTCVideoEncoder>)vp9Encoder;
+
+@end

+ 85 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoFrame.h

@@ -0,0 +1,85 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSInteger, RTCVideoRotation) {
+  RTCVideoRotation_0 = 0,
+  RTCVideoRotation_90 = 90,
+  RTCVideoRotation_180 = 180,
+  RTCVideoRotation_270 = 270,
+};
+
+@protocol RTCVideoFrameBuffer;
+
+// RTCVideoFrame is an ObjectiveC version of webrtc::VideoFrame.
+RTC_EXPORT
+@interface RTCVideoFrame : NSObject
+
+/** Width without rotation applied. */
+@property(nonatomic, readonly) int width;
+
+/** Height without rotation applied. */
+@property(nonatomic, readonly) int height;
+@property(nonatomic, readonly) RTCVideoRotation rotation;
+
+/** Timestamp in nanoseconds. */
+@property(nonatomic, readonly) int64_t timeStampNs;
+
+/** Timestamp 90 kHz. */
+@property(nonatomic, assign) int32_t timeStamp;
+
+@property(nonatomic, readonly) id<RTCVideoFrameBuffer> buffer;
+
+- (instancetype)init NS_UNAVAILABLE;
+- (instancetype) new NS_UNAVAILABLE;
+
+/** Initialize an RTCVideoFrame from a pixel buffer, rotation, and timestamp.
+ *  Deprecated - initialize with a RTCCVPixelBuffer instead
+ */
+- (instancetype)initWithPixelBuffer:(CVPixelBufferRef)pixelBuffer
+                           rotation:(RTCVideoRotation)rotation
+                        timeStampNs:(int64_t)timeStampNs
+    DEPRECATED_MSG_ATTRIBUTE("use initWithBuffer instead");
+
+/** Initialize an RTCVideoFrame from a pixel buffer combined with cropping and
+ *  scaling. Cropping will be applied first on the pixel buffer, followed by
+ *  scaling to the final resolution of scaledWidth x scaledHeight.
+ */
+- (instancetype)initWithPixelBuffer:(CVPixelBufferRef)pixelBuffer
+                        scaledWidth:(int)scaledWidth
+                       scaledHeight:(int)scaledHeight
+                          cropWidth:(int)cropWidth
+                         cropHeight:(int)cropHeight
+                              cropX:(int)cropX
+                              cropY:(int)cropY
+                           rotation:(RTCVideoRotation)rotation
+                        timeStampNs:(int64_t)timeStampNs
+    DEPRECATED_MSG_ATTRIBUTE("use initWithBuffer instead");
+
+/** Initialize an RTCVideoFrame from a frame buffer, rotation, and timestamp.
+ */
+- (instancetype)initWithBuffer:(id<RTCVideoFrameBuffer>)frameBuffer
+                      rotation:(RTCVideoRotation)rotation
+                   timeStampNs:(int64_t)timeStampNs;
+
+/** Return a frame that is guaranteed to be I420, i.e. it is possible to access
+ *  the YUV data on it.
+ */
+- (RTCVideoFrame *)newI420VideoFrame;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 30 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoFrameBuffer.h

@@ -0,0 +1,30 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol RTCI420Buffer;
+
+// RTCVideoFrameBuffer is an ObjectiveC version of webrtc::VideoFrameBuffer.
+RTC_EXPORT
+@protocol RTCVideoFrameBuffer <NSObject>
+
+@property(nonatomic, readonly) int width;
+@property(nonatomic, readonly) int height;
+
+- (id<RTCI420Buffer>)toI420;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 40 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoRenderer.h

@@ -0,0 +1,40 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+#if TARGET_OS_IPHONE
+#import <UIKit/UIKit.h>
+#endif
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class RTCVideoFrame;
+
+RTC_EXPORT
+@protocol RTCVideoRenderer <NSObject>
+
+/** The size of the frame. */
+- (void)setSize:(CGSize)size;
+
+/** The frame to be displayed. */
+- (void)renderFrame:(nullable RTCVideoFrame *)frame;
+
+@end
+
+RTC_EXPORT
+@protocol RTCVideoViewDelegate
+
+- (void)videoView:(id<RTCVideoRenderer>)videoView didChangeVideoSize:(CGSize)size;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 37 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoSource.h

@@ -0,0 +1,37 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCMacros.h"
+#import "RTCMediaSource.h"
+#import "RTCVideoCapturer.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+RTC_EXPORT
+
+@interface RTCVideoSource : RTCMediaSource <RTCVideoCapturerDelegate>
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ * Calling this function will cause frames to be scaled down to the
+ * requested resolution. Also, frames will be cropped to match the
+ * requested aspect ratio, and frames will be dropped to match the
+ * requested fps. The requested aspect ratio is orientation agnostic and
+ * will be adjusted to maintain the input orientation, so it doesn't
+ * matter if e.g. 1280x720 or 720x1280 is requested.
+ */
+- (void)adaptOutputFormatToWidth:(int)width height:(int)height fps:(int)fps;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 37 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoTrack.h

@@ -0,0 +1,37 @@
+/*
+ *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import "RTCMediaStreamTrack.h"
+
+#import "RTCMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol RTCVideoRenderer;
+@class RTCPeerConnectionFactory;
+@class RTCVideoSource;
+
+RTC_EXPORT
+@interface RTCVideoTrack : RTCMediaStreamTrack
+
+/** The video source for this video track. */
+@property(nonatomic, readonly) RTCVideoSource *source;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/** Register a renderer that will render all frames received on this track. */
+- (void)addRenderer:(id<RTCVideoRenderer>)renderer;
+
+/** Deregister a renderer. */
+- (void)removeRenderer:(id<RTCVideoRenderer>)renderer;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 41 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCVideoViewShading.h

@@ -0,0 +1,41 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#import "RTCVideoFrame.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * RTCVideoViewShading provides a way for apps to customize the OpenGL(ES) shaders used in
+ * rendering for the RTCEAGLVideoView/RTCNSGLVideoView.
+ */
+RTC_EXPORT
+@protocol RTCVideoViewShading <NSObject>
+
+/** Callback for I420 frames. Each plane is given as a texture. */
+- (void)applyShadingForFrameWithWidth:(int)width
+                               height:(int)height
+                             rotation:(RTCVideoRotation)rotation
+                               yPlane:(GLuint)yPlane
+                               uPlane:(GLuint)uPlane
+                               vPlane:(GLuint)vPlane;
+
+/** Callback for NV12 frames. Each plane is given as a texture. */
+- (void)applyShadingForFrameWithWidth:(int)width
+                               height:(int)height
+                             rotation:(RTCVideoRotation)rotation
+                               yPlane:(GLuint)yPlane
+                              uvPlane:(GLuint)uvPlane;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 45 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/RTCYUVPlanarBuffer.h

@@ -0,0 +1,45 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <AVFoundation/AVFoundation.h>
+
+#import "RTCMacros.h"
+#import "RTCVideoFrameBuffer.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Protocol for RTCVideoFrameBuffers containing YUV planar data. */
+RTC_EXPORT
+@protocol RTCYUVPlanarBuffer <RTCVideoFrameBuffer>
+
+@property(nonatomic, readonly) int chromaWidth;
+@property(nonatomic, readonly) int chromaHeight;
+@property(nonatomic, readonly) const uint8_t *dataY;
+@property(nonatomic, readonly) const uint8_t *dataU;
+@property(nonatomic, readonly) const uint8_t *dataV;
+@property(nonatomic, readonly) int strideY;
+@property(nonatomic, readonly) int strideU;
+@property(nonatomic, readonly) int strideV;
+
+- (instancetype)initWithWidth:(int)width
+                       height:(int)height
+                        dataY:(const uint8_t *)dataY
+                        dataU:(const uint8_t *)dataU
+                        dataV:(const uint8_t *)dataV;
+- (instancetype)initWithWidth:(int)width height:(int)height;
+- (instancetype)initWithWidth:(int)width
+                       height:(int)height
+                      strideY:(int)strideY
+                      strideU:(int)strideU
+                      strideV:(int)strideV;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 81 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/UIDevice+RTCDevice.h

@@ -0,0 +1,81 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <UIKit/UIKit.h>
+
+typedef NS_ENUM(NSInteger, RTCDeviceType) {
+  RTCDeviceTypeUnknown,
+  RTCDeviceTypeIPhone1G,
+  RTCDeviceTypeIPhone3G,
+  RTCDeviceTypeIPhone3GS,
+  RTCDeviceTypeIPhone4,
+  RTCDeviceTypeIPhone4Verizon,
+  RTCDeviceTypeIPhone4S,
+  RTCDeviceTypeIPhone5GSM,
+  RTCDeviceTypeIPhone5GSM_CDMA,
+  RTCDeviceTypeIPhone5CGSM,
+  RTCDeviceTypeIPhone5CGSM_CDMA,
+  RTCDeviceTypeIPhone5SGSM,
+  RTCDeviceTypeIPhone5SGSM_CDMA,
+  RTCDeviceTypeIPhone6Plus,
+  RTCDeviceTypeIPhone6,
+  RTCDeviceTypeIPhone6S,
+  RTCDeviceTypeIPhone6SPlus,
+  RTCDeviceTypeIPhone7,
+  RTCDeviceTypeIPhone7Plus,
+  RTCDeviceTypeIPhoneSE,
+  RTCDeviceTypeIPhone8,
+  RTCDeviceTypeIPhone8Plus,
+  RTCDeviceTypeIPhoneX,
+  RTCDeviceTypeIPodTouch1G,
+  RTCDeviceTypeIPodTouch2G,
+  RTCDeviceTypeIPodTouch3G,
+  RTCDeviceTypeIPodTouch4G,
+  RTCDeviceTypeIPodTouch5G,
+  RTCDeviceTypeIPodTouch6G,
+  RTCDeviceTypeIPad,
+  RTCDeviceTypeIPad2Wifi,
+  RTCDeviceTypeIPad2GSM,
+  RTCDeviceTypeIPad2CDMA,
+  RTCDeviceTypeIPad2Wifi2,
+  RTCDeviceTypeIPadMiniWifi,
+  RTCDeviceTypeIPadMiniGSM,
+  RTCDeviceTypeIPadMiniGSM_CDMA,
+  RTCDeviceTypeIPad3Wifi,
+  RTCDeviceTypeIPad3GSM_CDMA,
+  RTCDeviceTypeIPad3GSM,
+  RTCDeviceTypeIPad4Wifi,
+  RTCDeviceTypeIPad4GSM,
+  RTCDeviceTypeIPad4GSM_CDMA,
+  RTCDeviceTypeIPad5,
+  RTCDeviceTypeIPad6,
+  RTCDeviceTypeIPadAirWifi,
+  RTCDeviceTypeIPadAirCellular,
+  RTCDeviceTypeIPadAirWifiCellular,
+  RTCDeviceTypeIPadAir2,
+  RTCDeviceTypeIPadMini2GWifi,
+  RTCDeviceTypeIPadMini2GCellular,
+  RTCDeviceTypeIPadMini2GWifiCellular,
+  RTCDeviceTypeIPadMini3,
+  RTCDeviceTypeIPadMini4,
+  RTCDeviceTypeIPadPro9Inch,
+  RTCDeviceTypeIPadPro12Inch,
+  RTCDeviceTypeIPadPro12Inch2,
+  RTCDeviceTypeIPadPro10Inch,
+  RTCDeviceTypeSimulatori386,
+  RTCDeviceTypeSimulatorx86_64,
+};
+
+@interface UIDevice (RTCDevice)
+
++ (RTCDeviceType)deviceType;
++ (BOOL)isIOS11OrLater;
+
+@end

+ 92 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Headers/WebRTC.h

@@ -0,0 +1,92 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <WebRTC/RTCCodecSpecificInfo.h>
+#import <WebRTC/RTCEncodedImage.h>
+#import <WebRTC/RTCI420Buffer.h>
+#import <WebRTC/RTCLogging.h>
+#import <WebRTC/RTCMacros.h>
+#import <WebRTC/RTCMutableI420Buffer.h>
+#import <WebRTC/RTCMutableYUVPlanarBuffer.h>
+#import <WebRTC/RTCRtpFragmentationHeader.h>
+#import <WebRTC/RTCVideoCapturer.h>
+#import <WebRTC/RTCVideoCodecInfo.h>
+#import <WebRTC/RTCVideoDecoder.h>
+#import <WebRTC/RTCVideoDecoderFactory.h>
+#import <WebRTC/RTCVideoEncoder.h>
+#import <WebRTC/RTCVideoEncoderFactory.h>
+#import <WebRTC/RTCVideoEncoderQpThresholds.h>
+#import <WebRTC/RTCVideoEncoderSettings.h>
+#import <WebRTC/RTCVideoFrame.h>
+#import <WebRTC/RTCVideoFrameBuffer.h>
+#import <WebRTC/RTCVideoRenderer.h>
+#import <WebRTC/RTCYUVPlanarBuffer.h>
+#import <WebRTC/RTCAudioSession.h>
+#import <WebRTC/RTCAudioSessionConfiguration.h>
+#import <WebRTC/RTCCameraVideoCapturer.h>
+#import <WebRTC/RTCFileVideoCapturer.h>
+#import <WebRTC/RTCMTLVideoView.h>
+#import <WebRTC/RTCEAGLVideoView.h>
+#import <WebRTC/RTCVideoViewShading.h>
+#import <WebRTC/RTCCodecSpecificInfoH264.h>
+#import <WebRTC/RTCDefaultVideoDecoderFactory.h>
+#import <WebRTC/RTCDefaultVideoEncoderFactory.h>
+#import <WebRTC/RTCH264ProfileLevelId.h>
+#import <WebRTC/RTCVideoDecoderFactoryH264.h>
+#import <WebRTC/RTCVideoDecoderH264.h>
+#import <WebRTC/RTCVideoEncoderFactoryH264.h>
+#import <WebRTC/RTCVideoEncoderH264.h>
+#import <WebRTC/RTCCVPixelBuffer.h>
+#import <WebRTC/RTCCameraPreviewView.h>
+#import <WebRTC/RTCDispatcher.h>
+#import <WebRTC/UIDevice+RTCDevice.h>
+#import <WebRTC/RTCAudioSource.h>
+#import <WebRTC/RTCAudioTrack.h>
+#import <WebRTC/RTCConfiguration.h>
+#import <WebRTC/RTCDataChannel.h>
+#import <WebRTC/RTCDataChannelConfiguration.h>
+#import <WebRTC/RTCFieldTrials.h>
+#import <WebRTC/RTCIceCandidate.h>
+#import <WebRTC/RTCIceServer.h>
+#import <WebRTC/RTCIntervalRange.h>
+#import <WebRTC/RTCLegacyStatsReport.h>
+#import <WebRTC/RTCMediaConstraints.h>
+#import <WebRTC/RTCMediaSource.h>
+#import <WebRTC/RTCMediaStream.h>
+#import <WebRTC/RTCMediaStreamTrack.h>
+#import <WebRTC/RTCMetrics.h>
+#import <WebRTC/RTCMetricsSampleInfo.h>
+#import <WebRTC/RTCPeerConnection.h>
+#import <WebRTC/RTCPeerConnectionFactory.h>
+#import <WebRTC/RTCPeerConnectionFactoryOptions.h>
+#import <WebRTC/RTCRtcpParameters.h>
+#import <WebRTC/RTCRtpCodecParameters.h>
+#import <WebRTC/RTCRtpEncodingParameters.h>
+#import <WebRTC/RTCRtpHeaderExtension.h>
+#import <WebRTC/RTCRtpParameters.h>
+#import <WebRTC/RTCRtpReceiver.h>
+#import <WebRTC/RTCRtpSender.h>
+#import <WebRTC/RTCRtpTransceiver.h>
+#import <WebRTC/RTCDtmfSender.h>
+#import <WebRTC/RTCSSLAdapter.h>
+#import <WebRTC/RTCSessionDescription.h>
+#import <WebRTC/RTCTracing.h>
+#import <WebRTC/RTCCertificate.h>
+#import <WebRTC/RTCVideoSource.h>
+#import <WebRTC/RTCVideoTrack.h>
+#import <WebRTC/RTCVideoCodecConstants.h>
+#import <WebRTC/RTCVideoDecoderVP8.h>
+#import <WebRTC/RTCVideoDecoderVP9.h>
+#import <WebRTC/RTCVideoEncoderVP8.h>
+#import <WebRTC/RTCVideoEncoderVP9.h>
+#import <WebRTC/RTCNativeI420Buffer.h>
+#import <WebRTC/RTCNativeMutableI420Buffer.h>
+#import <WebRTC/RTCCallbackLogger.h>
+#import <WebRTC/RTCFileLogger.h>

BIN
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Info.plist


+ 966 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/LICENSE.md

@@ -0,0 +1,966 @@
+# webrtc
+```
+Copyright (c) 2011, The WebRTC project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+```
+
+# abseil-cpp
+```
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      &quot;Legal Entity&quot; shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      &quot;control&quot; means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      &quot;Source&quot; form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      &quot;Object&quot; form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      &quot;Work&quot; shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      &quot;Derivative Works&quot; shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      &quot;Contribution&quot; shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, &quot;submitted&quot;
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as &quot;Not a Contribution.&quot;
+
+      &quot;Contributor&quot; shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a &quot;NOTICE&quot; text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an &quot;AS IS&quot; BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same &quot;printed page&quot; as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+   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 &quot;AS IS&quot; 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.
+   
+   
+```
+
+# base64
+```
+//*********************************************************************
+//* Base64 - a simple base64 encoder and decoder.
+//*
+//*     Copyright (c) 1999, Bob Withers - bwit@pobox.com
+//*
+//* This code may be freely used for any purpose, either personal
+//* or commercial, provided the authors copyright notice remains
+//* intact.
+//*
+//* Enhancements by Stanley Yamane:
+//*     o reverse lookup table for the decode function
+//*     o reserve string buffer space in advance
+//*
+//*********************************************************************
+
+```
+
+# boringssl
+```
+BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL
+licensing. Files that are completely new have a Google copyright and an ISC
+license. This license is reproduced at the bottom of this file.
+
+Contributors to BoringSSL are required to follow the CLA rules for Chromium:
+https://cla.developers.google.com/clas
+
+Files in third_party/ have their own licenses, as described therein. The MIT
+license, for third_party/fiat, which, unlike other third_party directories, is
+compiled into non-test libraries, is included below.
+
+The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the
+OpenSSL License and the original SSLeay license apply to the toolkit. See below
+for the actual license texts. Actually both licenses are BSD-style Open Source
+licenses. In case of any license issues related to OpenSSL please contact
+openssl-core@openssl.org.
+
+The following are Google-internal bug numbers where explicit permission from
+some authors is recorded for use of their work. (This is purely for our own
+record keeping.)
+  27287199
+  27287880
+  27287883
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    &quot;This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)&quot;
+ *
+ * 4. The names &quot;OpenSSL Toolkit&quot; and &quot;OpenSSL Project&quot; must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called &quot;OpenSSL&quot;
+ *    nor may &quot;OpenSSL&quot; appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    &quot;This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)&quot;
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    &quot;This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)&quot;
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    &quot;This product includes software written by Tim Hudson (tjh@cryptsoft.com)&quot;
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+
+ISC license used for completely new code in BoringSSL:
+
+/* Copyright (c) 2015, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED &quot;AS IS&quot; AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+
+The code in third_party/fiat carries the MIT license:
+
+Copyright (c) 2015-2016 the fiat-crypto authors (see
+https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS).
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+Licenses for support code
+-------------------------
+
+Parts of the TLS test suite are under the Go license. This code is not included
+in BoringSSL (i.e. libcrypto and libssl) when compiled, however, so
+distributing code linked against BoringSSL does not trigger this license:
+
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+BoringSSL uses the Chromium test infrastructure to run a continuous build,
+trybots etc. The scripts which manage this, and the script for generating build
+metadata, are under the Chromium license. Distributing code linked against
+BoringSSL does not trigger this license.
+
+Copyright 2015 The Chromium Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+```
+
+# fft
+```
+/*
+ * Copyright(c)1995,97 Mark Olesen &lt;olesen@me.QueensU.CA&gt;
+ *    Queen's Univ at Kingston (Canada)
+ *
+ * Permission to use, copy, modify, and distribute this software for
+ * any purpose without fee is hereby granted, provided that this
+ * entire notice is included in all copies of any software which is
+ * or includes a copy or modification of this software and in all
+ * copies of the supporting documentation for such software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED &quot;AS IS&quot;, WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR QUEEN'S
+ * UNIVERSITY AT KINGSTON MAKES ANY REPRESENTATION OR WARRANTY OF ANY
+ * KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS
+ * FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ * All of which is to say that you can do what you like with this
+ * source code provided you don't try to sell it as your own and you
+ * include an unaltered copy of this message (including the
+ * copyright).
+ *
+ * It is also implicitly understood that bug fixes and improvements
+ * should make their way back to the general Internet community so
+ * that everyone benefits.
+ */
+
+```
+
+# fft4g
+```
+/*
+ * http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html
+ * Copyright Takuya OOURA, 1996-2001
+ *
+ * You may use, copy, modify and distribute this code for any purpose (include
+ * commercial use) and without fee. Please refer to this package when you modify
+ * this code.
+ */
+
+```
+
+# fiat
+```
+The MIT License (MIT)
+
+Copyright (c) 2015-2016 the fiat-crypto authors (see
+https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS).
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &quot;Software&quot;), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+```
+
+# g711
+```
+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * g711.h - In line A-law and u-law conversion routines
+ *
+ * Written by Steve Underwood &lt;steveu@coppice.org&gt;
+ *
+ * Copyright (C) 2001 Steve Underwood
+ *
+ *  Despite my general liking of the GPL, I place this code in the
+ *  public domain for the benefit of all mankind - even the slimy
+ *  ones who might try to proprietize my work and use it to my
+ *  detriment.
+ */
+
+```
+
+# g722
+```
+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * g722_decode.c - The ITU G.722 codec, decode part.
+ *
+ * Written by Steve Underwood &lt;steveu@coppice.org&gt;
+ *
+ * Copyright (C) 2005 Steve Underwood
+ *
+ *  Despite my general liking of the GPL, I place my own contributions
+ *  to this code in the public domain for the benefit of all mankind -
+ *  even the slimy ones who might try to proprietize my work and use it
+ *  to my detriment.
+ *
+ * Based in part on a single channel G.722 codec which is:
+ *
+ * Copyright (c) CMU 1993
+ * Computer Science, Speech Group
+ * Chengxiang Lu and Alex Hauptmann
+ */
+
+```
+
+# libsrtp
+```
+/*
+ *	
+ * Copyright (c) 2001-2017 Cisco Systems, Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ *   Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * 
+ *   Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ * 
+ *   Neither the name of the Cisco Systems, Inc. nor the names of its
+ *   contributors may be used to endorse or promote products derived
+ *   from this software without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+```
+
+# libvpx
+```
+Copyright (c) 2010, The WebM Project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google, nor the WebM Project, nor the names
+    of its contributors may be used to endorse or promote products
+    derived from this software without specific prior written
+    permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+```
+
+# libyuv
+```
+Copyright 2011 The LibYuv Project Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+```
+
+# opus
+```
+Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
+                    Jean-Marc Valin, Timothy B. Terriberry,
+                    CSIRO, Gregory Maxwell, Mark Borgerding,
+                    Erik de Castro Lopo
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of Internet Society, IETF or IETF Trust, nor the
+names of specific contributors, may be used to endorse or promote
+products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Opus is subject to the royalty-free patent licenses which are
+specified at:
+
+Xiph.Org Foundation:
+https://datatracker.ietf.org/ipr/1524/
+
+Microsoft Corporation:
+https://datatracker.ietf.org/ipr/1914/
+
+Broadcom Corporation:
+https://datatracker.ietf.org/ipr/1526/
+
+```
+
+# protobuf
+```
+Copyright 2008 Google Inc.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Code generated by the Protocol Buffer compiler is owned by the owner
+of the input file used when generating it.  This code is not
+standalone and requires a support library to be linked with it.  This
+support library is itself covered by the above license.
+
+```
+
+# rnnoise
+```
+Copyright (c) 2017, Mozilla
+Copyright (c) 2007-2017, Jean-Marc Valin
+Copyright (c) 2005-2017, Xiph.Org Foundation
+Copyright (c) 2003-2004, Mark Borgerding
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.Org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+```
+
+# sigslot
+```
+// sigslot.h: Signal/Slot classes
+//
+// Written by Sarah Thompson (sarah@telergy.com) 2002.
+//
+// License: Public domain. You are free to use this code however you like, with
+// the proviso that the author takes on no responsibility or liability for any
+// use.
+
+```
+
+# spl_sqrt_floor
+```
+/*
+ * Written by Wilco Dijkstra, 1996. The following email exchange establishes the
+ * license.
+ *
+ * From: Wilco Dijkstra &lt;Wilco.Dijkstra@ntlworld.com&gt;
+ * Date: Fri, Jun 24, 2011 at 3:20 AM
+ * Subject: Re: sqrt routine
+ * To: Kevin Ma &lt;kma@google.com&gt;
+ * Hi Kevin,
+ * Thanks for asking. Those routines are public domain (originally posted to
+ * comp.sys.arm a long time ago), so you can use them freely for any purpose.
+ * Cheers,
+ * Wilco
+ *
+ * ----- Original Message -----
+ * From: &quot;Kevin Ma&quot; &lt;kma@google.com&gt;
+ * To: &lt;Wilco.Dijkstra@ntlworld.com&gt;
+ * Sent: Thursday, June 23, 2011 11:44 PM
+ * Subject: Fwd: sqrt routine
+ * Hi Wilco,
+ * I saw your sqrt routine from several web sites, including
+ * http://www.finesse.demon.co.uk/steven/sqrt.html.
+ * Just wonder if there's any copyright information with your Successive
+ * approximation routines, or if I can freely use it for any purpose.
+ * Thanks.
+ * Kevin
+ */
+
+```
+
+# usrsctp
+```
+(Copied from the COPYRIGHT file of
+https://code.google.com/p/sctp-refimpl/source/browse/trunk/COPYRIGHT)
+--------------------------------------------------------------------------------
+
+Copyright (c) 2001, 2002 Cisco Systems, Inc.
+Copyright (c) 2002-12 Randall R. Stewart
+Copyright (c) 2002-12 Michael Tuexen
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+```
+
+# zlib
+```
+version 1.2.11, January 15th, 2017
+
+Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+
+This software is provided 'as-is', without any express or implied
+warranty.  In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+   claim that you wrote the original software. If you use this software
+   in a product, an acknowledgment in the product documentation would be
+   appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+   misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+```
+

+ 6 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/Modules/module.modulemap

@@ -0,0 +1,6 @@
+framework module WebRTC {
+  umbrella header "WebRTC.h"
+
+  export *
+  module * { export * }
+}

BIN
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/WebRTC


+ 985 - 0
wfuikit/WFChatUIKit/AVEngine/GoogleWebRTC/LICENSE.md

@@ -0,0 +1,985 @@
+# webrtc
+```
+Copyright (c) 2011, The WebRTC project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+This source tree contains third party source code which is governed by third
+party licenses. Paths to the files and associated licenses are collected here.
+
+Files governed by third party licenses:
+base/base64.cc
+base/base64.h
+base/md5.cc
+base/md5.h
+base/sha1.cc
+base/sha1.h
+base/sigslot.cc
+base/sigslot.h
+common_audio/fft4g.c
+common_audio/signal_processing/spl_sqrt_floor.c
+common_audio/signal_processing/spl_sqrt_floor_arm.S
+modules/audio_coding/codecs/g711/main/source/g711.c
+modules/audio_coding/codecs/g711/main/source/g711.h
+modules/audio_coding/codecs/g722/main/source/g722_decode.c
+modules/audio_coding/codecs/g722/main/source/g722_enc_dec.h
+modules/audio_coding/codecs/g722/main/source/g722_encode.c
+modules/audio_coding/codecs/isac/main/source/fft.c
+modules/audio_device/mac/portaudio/pa_memorybarrier.h
+modules/audio_device/mac/portaudio/pa_ringbuffer.c
+modules/audio_device/mac/portaudio/pa_ringbuffer.h
+modules/audio_processing/aec/aec_rdft.c
+system_wrappers/source/condition_variable_event_win.cc
+system_wrappers/source/set_thread_name_win.h
+
+Individual licenses for each file:
+-------------------------------------------------------------------------------
+Files:
+base/base64.cc
+base/base64.h
+
+License:
+//*********************************************************************
+//* Base64 - a simple base64 encoder and decoder.
+//*
+//*     Copyright (c) 1999, Bob Withers - bwit@pobox.com
+//*
+//* This code may be freely used for any purpose, either personal
+//* or commercial, provided the authors copyright notice remains
+//* intact.
+//*
+//* Enhancements by Stanley Yamane:
+//*     o reverse lookup table for the decode function
+//*     o reserve string buffer space in advance
+//*
+//*********************************************************************
+-------------------------------------------------------------------------------
+Files:
+base/md5.cc
+base/md5.h
+
+License:
+/*
+ * This code implements the MD5 message-digest algorithm.
+ * The algorithm is due to Ron Rivest.  This code was
+ * written by Colin Plumb in 1993, no copyright is claimed.
+ * This code is in the public domain; do with it what you wish.
+ *
+-------------------------------------------------------------------------------
+Files:
+base/sha1.cc
+base/sha1.h
+
+License:
+/*
+ * SHA-1 in C
+ * By Steve Reid &lt;sreid@sea-to-sky.net&gt;
+ * 100% Public Domain
+ *
+ * -----------------
+ * Modified 7/98
+ * By James H. Brown &lt;jbrown@burgoyne.com&gt;
+ * Still 100% Public Domain
+ *
+-------------------------------------------------------------------------------
+Files:
+base/sigslot.cc
+base/sigslot.h
+
+License:
+// sigslot.h: Signal/Slot classes
+//
+// Written by Sarah Thompson (sarah@telergy.com) 2002.
+//
+// License: Public domain. You are free to use this code however you like, with
+// the proviso that the author takes on no responsibility or liability for any
+// use.
+-------------------------------------------------------------------------------
+Files:
+common_audio/signal_processing/spl_sqrt_floor.c
+common_audio/signal_processing/spl_sqrt_floor_arm.S
+
+License:
+/*
+ * Written by Wilco Dijkstra, 1996. The following email exchange establishes the
+ * license.
+ *
+ * From: Wilco Dijkstra &lt;Wilco.Dijkstra@ntlworld.com&gt;
+ * Date: Fri, Jun 24, 2011 at 3:20 AM
+ * Subject: Re: sqrt routine
+ * To: Kevin Ma &lt;kma@google.com&gt;
+ * Hi Kevin,
+ * Thanks for asking. Those routines are public domain (originally posted to
+ * comp.sys.arm a long time ago), so you can use them freely for any purpose.
+ * Cheers,
+ * Wilco
+ *
+ * ----- Original Message -----
+ * From: &quot;Kevin Ma&quot; &lt;kma@google.com&gt;
+ * To: &lt;Wilco.Dijkstra@ntlworld.com&gt;
+ * Sent: Thursday, June 23, 2011 11:44 PM
+ * Subject: Fwd: sqrt routine
+ * Hi Wilco,
+ * I saw your sqrt routine from several web sites, including
+ * http://www.finesse.demon.co.uk/steven/sqrt.html.
+ * Just wonder if there's any copyright information with your Successive
+ * approximation routines, or if I can freely use it for any purpose.
+ * Thanks.
+ * Kevin
+ */
+-------------------------------------------------------------------------------
+Files:
+modules/audio_coding/codecs/g711/main/source/g711.c
+modules/audio_coding/codecs/g711/main/source/g711.h
+
+License:
+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * g711.h - In line A-law and u-law conversion routines
+ *
+ * Written by Steve Underwood &lt;steveu@coppice.org&gt;
+ *
+ * Copyright (C) 2001 Steve Underwood
+ *
+ *  Despite my general liking of the GPL, I place this code in the
+ *  public domain for the benefit of all mankind - even the slimy
+ *  ones who might try to proprietize my work and use it to my
+ *  detriment.
+ */
+-------------------------------------------------------------------------------
+Files:
+modules/audio_coding/codecs/g722/main/source/g722_decode.c
+modules/audio_coding/codecs/g722/main/source/g722_enc_dec.h
+modules/audio_coding/codecs/g722/main/source/g722_encode.c
+
+License:
+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * g722_decode.c - The ITU G.722 codec, decode part.
+ *
+ * Written by Steve Underwood &lt;steveu@coppice.org&gt;
+ *
+ * Copyright (C) 2005 Steve Underwood
+ *
+ *  Despite my general liking of the GPL, I place my own contributions
+ *  to this code in the public domain for the benefit of all mankind -
+ *  even the slimy ones who might try to proprietize my work and use it
+ *  to my detriment.
+ *
+ * Based in part on a single channel G.722 codec which is:
+ *
+ * Copyright (c) CMU 1993
+ * Computer Science, Speech Group
+ * Chengxiang Lu and Alex Hauptmann
+ */
+-------------------------------------------------------------------------------
+Files:
+modules/audio_coding/codecs/isac/main/source/fft.c
+
+License:
+/*
+ * Copyright(c)1995,97 Mark Olesen &lt;olesen@me.QueensU.CA&gt;
+ *    Queen's Univ at Kingston (Canada)
+ *
+ * Permission to use, copy, modify, and distribute this software for
+ * any purpose without fee is hereby granted, provided that this
+ * entire notice is included in all copies of any software which is
+ * or includes a copy or modification of this software and in all
+ * copies of the supporting documentation for such software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED &quot;AS IS&quot;, WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR QUEEN'S
+ * UNIVERSITY AT KINGSTON MAKES ANY REPRESENTATION OR WARRANTY OF ANY
+ * KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS
+ * FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ * All of which is to say that you can do what you like with this
+ * source code provided you don't try to sell it as your own and you
+ * include an unaltered copy of this message (including the
+ * copyright).
+ *
+ * It is also implicitly understood that bug fixes and improvements
+ * should make their way back to the general Internet community so
+ * that everyone benefits.
+ */
+-------------------------------------------------------------------------------
+Files:
+modules/audio_device/mac/portaudio/pa_memorybarrier.h
+modules/audio_device/mac/portaudio/pa_ringbuffer.c
+modules/audio_device/mac/portaudio/pa_ringbuffer.h
+
+License:
+/*
+ * $Id: pa_memorybarrier.h 1240 2007-07-17 13:05:07Z bjornroche $
+ * Portable Audio I/O Library
+ * Memory barrier utilities
+ *
+ * Author: Bjorn Roche, XO Audio, LLC
+ *
+ * This program uses the PortAudio Portable Audio Library.
+ * For more information see: http://www.portaudio.com
+ * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files
+ * (the &quot;Software&quot;), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * The text above constitutes the entire PortAudio license; however,
+ * the PortAudio community also makes the following non-binding requests:
+ *
+ * Any person wishing to distribute modifications to the Software is
+ * requested to send the modifications to the original developer so that
+ * they can be incorporated into the canonical version. It is also
+ * requested that these non-binding requests be included along with the
+ * license above.
+ */
+
+/*
+ * $Id: pa_ringbuffer.c 1421 2009-11-18 16:09:05Z bjornroche $
+ * Portable Audio I/O Library
+ * Ring Buffer utility.
+ *
+ * Author: Phil Burk, http://www.softsynth.com
+ * modified for SMP safety on Mac OS X by Bjorn Roche
+ * modified for SMP safety on Linux by Leland Lucius
+ * also, allowed for const where possible
+ * modified for multiple-byte-sized data elements by Sven Fischer
+ *
+ * Note that this is safe only for a single-thread reader and a
+ * single-thread writer.
+ *
+ * This program uses the PortAudio Portable Audio Library.
+ * For more information see: http://www.portaudio.com
+ * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files
+ * (the &quot;Software&quot;), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * The text above constitutes the entire PortAudio license; however,
+ * the PortAudio community also makes the following non-binding requests:
+ *
+ * Any person wishing to distribute modifications to the Software is
+ * requested to send the modifications to the original developer so that
+ * they can be incorporated into the canonical version. It is also
+ * requested that these non-binding requests be included along with the
+ * license above.
+ */
+-------------------------------------------------------------------------------
+Files:
+common_audio/fft4g.c
+modules/audio_processing/aec/aec_rdft.c
+
+License:
+/*
+ * http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html
+ * Copyright Takuya OOURA, 1996-2001
+ *
+ * You may use, copy, modify and distribute this code for any purpose (include
+ * commercial use) and without fee. Please refer to this package when you modify
+ * this code.
+ */
+-------------------------------------------------------------------------------
+Files:
+system_wrappers/source/condition_variable_event_win.cc
+
+Source:
+http://www1.cse.wustl.edu/~schmidt/ACE-copying.html
+
+License:
+Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM),
+and CoSMIC(TM)
+
+ACE(TM), TAO(TM), CIAO(TM), DAnCE&gt;(TM), and CoSMIC(TM) (henceforth referred to
+as &quot;DOC software&quot;) are copyrighted by Douglas C. Schmidt and his research
+group at Washington University, University of California, Irvine, and
+Vanderbilt University, Copyright (c) 1993-2009, all rights reserved. Since DOC
+software is open-source, freely available software, you are free to use,
+modify, copy, and distribute--perpetually and irrevocably--the DOC software
+source code and object code produced from the source, as well as copy and
+distribute modified versions of this software. You must, however, include this
+copyright statement along with any code built using DOC software that you
+release. No copyright statement needs to be provided if you just ship binary
+executables of your software products.
+You can use DOC software in commercial and/or binary software releases and are
+under no obligation to redistribute any of your source code that is built
+using DOC software. Note, however, that you may not misappropriate the DOC
+software code, such as copyrighting it yourself or claiming authorship of the
+DOC software code, in a way that will prevent DOC software from being
+distributed freely using an open-source development model. You needn't inform
+anyone that you're using DOC software in your software, though we encourage
+you to let us know so we can promote your project in the DOC software success
+stories.
+
+The ACE, TAO, CIAO, DAnCE, and CoSMIC web sites are maintained by the DOC
+Group at the Institute for Software Integrated Systems (ISIS) and the Center
+for Distributed Object Computing of Washington University, St. Louis for the
+development of open-source software as part of the open-source software
+community. Submissions are provided by the submitter ``as is'' with no
+warranties whatsoever, including any warranty of merchantability,
+noninfringement of third party intellectual property, or fitness for any
+particular purpose. In no event shall the submitter be liable for any direct,
+indirect, special, exemplary, punitive, or consequential damages, including
+without limitation, lost profits, even if advised of the possibility of such
+damages. Likewise, DOC software is provided as is with no warranties of any
+kind, including the warranties of design, merchantability, and fitness for a
+particular purpose, noninfringement, or arising from a course of dealing,
+usage or trade practice. Washington University, UC Irvine, Vanderbilt
+University, their employees, and students shall have no liability with respect
+to the infringement of copyrights, trade secrets or any patents by DOC
+software or any part thereof. Moreover, in no event will Washington
+University, UC Irvine, or Vanderbilt University, their employees, or students
+be liable for any lost revenue or profits or other special, indirect and
+consequential damages.
+
+DOC software is provided with no support and without any obligation on the
+part of Washington University, UC Irvine, Vanderbilt University, their
+employees, or students to assist in its use, correction, modification, or
+enhancement. A number of companies around the world provide commercial support
+for DOC software, however. DOC software is Y2K-compliant, as long as the
+underlying OS platform is Y2K-compliant. Likewise, DOC software is compliant
+with the new US daylight savings rule passed by Congress as &quot;The Energy Policy
+Act of 2005,&quot; which established new daylight savings times (DST) rules for the
+United States that expand DST as of March 2007. Since DOC software obtains
+time/date and calendaring information from operating systems users will not be
+affected by the new DST rules as long as they upgrade their operating systems
+accordingly.
+
+The names ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), CoSMIC(TM), Washington
+University, UC Irvine, and Vanderbilt University, may not be used to endorse
+or promote products or services derived from this source without express
+written permission from Washington University, UC Irvine, or Vanderbilt
+University. This license grants no permission to call products or services
+derived from this source ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), or CoSMIC(TM),
+nor does it grant permission for the name Washington University, UC Irvine, or
+Vanderbilt University to appear in their names.
+-------------------------------------------------------------------------------
+Files:
+system_wrappers/source/set_thread_name_win.h
+
+Source:
+http://msdn.microsoft.com/en-us/cc300389.aspx#P
+
+License:
+This license governs use of code marked as “sample” or “example” available on
+this web site without a license agreement, as provided under the section above
+titled “NOTICE SPECIFIC TO SOFTWARE AVAILABLE ON THIS WEB SITE.” If you use
+such code (the “software”), you accept this license. If you do not accept the
+license, do not use the software.
+
+1. Definitions
+
+The terms “reproduce,” “reproduction,” “derivative works,” and “distribution”
+have the same meaning here as under U.S. copyright law.
+
+A “contribution” is the original software, or any additions or changes to the
+software.
+
+A “contributor” is any person that distributes its contribution under this
+license.
+
+“Licensed patents” are a contributor’s patent claims that read directly on its
+contribution.
+
+2. Grant of Rights
+
+(A) Copyright Grant - Subject to the terms of this license, including the
+license conditions and limitations in section 3, each contributor grants you a
+non-exclusive, worldwide, royalty-free copyright license to reproduce its
+contribution, prepare derivative works of its contribution, and distribute its
+contribution or any derivative works that you create.
+
+(B) Patent Grant - Subject to the terms of this license, including the license
+conditions and limitations in section 3, each contributor grants you a
+non-exclusive, worldwide, royalty-free license under its licensed patents to
+make, have made, use, sell, offer for sale, import, and/or otherwise dispose
+of its contribution in the software or derivative works of the contribution in
+the software.
+
+3. Conditions and Limitations
+
+(A) No Trademark License- This license does not grant you rights to use any
+contributors’ name, logo, or trademarks.
+
+(B) If you bring a patent claim against any contributor over patents that you
+claim are infringed by the software, your patent license from such contributor
+to the software ends automatically.
+
+(C) If you distribute any portion of the software, you must retain all
+copyright, patent, trademark, and attribution notices that are present in the
+software.
+
+(D) If you distribute any portion of the software in source code form, you may
+do so only under this license by including a complete copy of this license
+with your distribution. If you distribute any portion of the software in
+compiled or object code form, you may only do so under a license that complies
+with this license.
+
+(E) The software is licensed “as-is.” You bear the risk of using it. The
+contributors give no express warranties, guarantees or conditions. You may
+have additional consumer rights under your local laws which this license
+cannot change. To the extent permitted under your local laws, the contributors
+exclude the implied warranties of merchantability, fitness for a particular
+purpose and non-infringement.
+
+(F) Platform Limitation - The licenses granted in sections 2(A) and 2(B)
+extend only to the software or derivative works that you create that run on a
+Microsoft Windows operating system product.
+
+
+```
+
+# boringssl
+```
+BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL
+licensing. Files that are completely new have a Google copyright and an ISC
+license. This license is reproduced at the bottom of this file.
+
+Contributors to BoringSSL are required to follow the CLA rules for Chromium:
+https://cla.developers.google.com/clas
+
+Some files from Intel are under yet another license, which is also included
+underneath.
+
+The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the
+OpenSSL License and the original SSLeay license apply to the toolkit. See below
+for the actual license texts. Actually both licenses are BSD-style Open Source
+licenses. In case of any license issues related to OpenSSL please contact
+openssl-core@openssl.org.
+
+The following are Google-internal bug numbers where explicit permission from
+some authors is recorded for use of their work. (This is purely for our own
+record keeping.)
+  27287199
+  27287880
+  27287883
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    &quot;This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)&quot;
+ *
+ * 4. The names &quot;OpenSSL Toolkit&quot; and &quot;OpenSSL Project&quot; must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called &quot;OpenSSL&quot;
+ *    nor may &quot;OpenSSL&quot; appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    &quot;This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)&quot;
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    &quot;This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)&quot;
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    &quot;This product includes software written by Tim Hudson (tjh@cryptsoft.com)&quot;
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+
+ISC license used for completely new code in BoringSSL:
+
+/* Copyright (c) 2015, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED &quot;AS IS&quot; AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+
+Some files from Intel carry the following license:
+
+# Copyright (c) 2012, Intel Corporation
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# *  Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+# *  Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the
+#    distribution.
+#
+# *  Neither the name of the Intel Corporation nor the names of its
+#    contributors may be used to endorse or promote products derived from
+#    this software without specific prior written permission.
+#
+#
+# THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION &quot;&quot;AS IS&quot;&quot; AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+```
+
+# libsrtp
+```
+/*
+ *	
+ * Copyright (c) 2001-2017 Cisco Systems, Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ *   Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * 
+ *   Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ * 
+ *   Neither the name of the Cisco Systems, Inc. nor the names of its
+ *   contributors may be used to endorse or promote products derived
+ *   from this software without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+```
+
+# libvpx
+```
+Copyright (c) 2010, The WebM Project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google, nor the WebM Project, nor the names
+    of its contributors may be used to endorse or promote products
+    derived from this software without specific prior written
+    permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+```
+
+# libyuv
+```
+Copyright 2011 The LibYuv Project Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+```
+
+# opus
+```
+Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
+                    Jean-Marc Valin, Timothy B. Terriberry,
+                    CSIRO, Gregory Maxwell, Mark Borgerding,
+                    Erik de Castro Lopo
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of Internet Society, IETF or IETF Trust, nor the
+names of specific contributors, may be used to endorse or promote
+products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Opus is subject to the royalty-free patent licenses which are
+specified at:
+
+Xiph.Org Foundation:
+https://datatracker.ietf.org/ipr/1524/
+
+Microsoft Corporation:
+https://datatracker.ietf.org/ipr/1914/
+
+Broadcom Corporation:
+https://datatracker.ietf.org/ipr/1526/
+
+```
+
+# protobuf
+```
+This license applies to all parts of Protocol Buffers except the following:
+
+  - Atomicops support for generic gcc, located in
+    src/google/protobuf/stubs/atomicops_internals_generic_gcc.h.
+    This file is copyrighted by Red Hat Inc.
+
+  - Atomicops support for AIX/POWER, located in
+    src/google/protobuf/stubs/atomicops_internals_power.h.
+    This file is copyrighted by Bloomberg Finance LP.
+
+Copyright 2014, Google Inc.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Code generated by the Protocol Buffer compiler is owned by the owner
+of the input file used when generating it.  This code is not
+standalone and requires a support library to be linked with it.  This
+support library is itself covered by the above license.
+
+```
+
+# usrsctp
+```
+(Copied from the COPYRIGHT file of
+https://code.google.com/p/sctp-refimpl/source/browse/trunk/COPYRIGHT)
+--------------------------------------------------------------------------------
+
+Copyright (c) 2001, 2002 Cisco Systems, Inc.
+Copyright (c) 2002-12 Randall R. Stewart
+Copyright (c) 2002-12 Michael Tuexen
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+```
+
+# zlib
+```
+Copyright (c) 2011, The WebRTC project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+version 1.2.11, January 15th, 2017
+
+Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+
+This software is provided 'as-is', without any express or implied
+warranty.  In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+   claim that you wrote the original software. If you use this software
+   in a product, an acknowledgment in the product documentation would be
+   appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+   misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+```
+

+ 413 - 0
wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/Headers/WFAVEngineKit.h

@@ -0,0 +1,413 @@
+//
+//  WFAVEngineKit.h
+//  WFAVEngineKit
+//
+//  Created by heavyrain on 17/9/27.
+//  Copyright © 2017年 WildFireChat. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+//! Project version number for WFAVEngineKit.
+FOUNDATION_EXPORT double WFAVEngineKitVersionNumber;
+
+//! Project version string for WFAVEngineKit.
+FOUNDATION_EXPORT const unsigned char WFAVEngineKitVersionString[];
+
+#import <Foundation/Foundation.h>
+#import <WebRTC/WebRTC.h>
+#import <WFChatClient/WFCChatClient.h>
+
+@class WFAVCallSession;
+
+#pragma mark - 枚举值定义
+/**
+ 通话状态
+
+ - kWFAVEngineStateIdle: 无通话状态
+ - kWFAVEngineStateOutgoing: 呼出中
+ - kWFAVEngineStateIncomming: 呼入中
+ - kWFAVEngineStateConnecting: 建立中
+ - kWFAVEngineStateConnected: 通话中
+ */
+typedef NS_ENUM(NSInteger, WFAVEngineState) {
+  kWFAVEngineStateIdle,
+  kWFAVEngineStateOutgoing,
+  kWFAVEngineStateIncomming,
+  kWFAVEngineStateConnecting,
+  kWFAVEngineStateConnected
+};
+
+/**
+ 缩放模式
+
+ - kWFAVVideoScalingTypeAspectFit: 自适应
+ - kWFAVVideoScalingTypeAspectFill: 拉伸
+ - kWFAVVideoScalingTypeAspectBalanced: 平衡
+ */
+typedef NS_ENUM(NSInteger, WFAVVideoScalingType) {
+    kWFAVVideoScalingTypeAspectFit,
+    kWFAVVideoScalingTypeAspectFill,
+    kWFAVVideoScalingTypeAspectBalanced
+};
+
+/**
+ 视频属性
+ 分辨率(宽x高), 帧率(fps),码率(kpbs)
+
+ - kWFAVVideoProfile120P:       160x120,    15, 120
+ - kWFAVVideoProfile120P_3:     120x120,    15, 100
+ - kWFAVVideoProfile180P:       320x180,    15, 280
+ - kWFAVVideoProfile180P_3:     180x180,    15, 200
+ - kWFAVVideoProfile180P_4:     240x180,    15, 240
+ - kWFAVVideoProfile240P:       320x240,    15, 360
+ - kWFAVVideoProfile240P_3:     240x240,    15, 280
+ - kWFAVVideoProfile240P_4:     424x240,    15, 400
+ - kWFAVVideoProfile360P:       640x360,    15, 800
+ - kWFAVVideoProfile360P_3:     360x360,    15, 520
+ - kWFAVVideoProfile360P_4:     640x360,    30, 1200
+ - kWFAVVideoProfile360P_6:     360x360,    30, 780
+ - kWFAVVideoProfile360P_7:     480x360,    15, 1000
+ - kWFAVVideoProfile360P_8:     480x360,    30, 1500
+ - kWFAVVideoProfile480P:       640x480,    15, 1000
+ - kWFAVVideoProfile480P_3:     480x480,    15, 800
+ - kWFAVVideoProfile480P_4:     640x480,    30, 1500
+ - kWFAVVideoProfile480P_6:     480x480,    30, 1200
+ - kWFAVVideoProfile480P_8:     848x480,    15, 1200
+ - kWFAVVideoProfile480P_9:     848x480,    30, 1800
+ - kWFAVVideoProfile720P:       1280x720,   15, 2400
+ - kWFAVVideoProfile720P_3:     1280x720,   30, 3699
+ - kWFAVVideoProfile720P_5:     960x720,    15, 1920
+ - kWFAVVideoProfile720P_6:     960x720,    30, 2880
+ - kWFAVVideoProfileDefault:    默认值kWFAVVideoProfile360P
+ */
+typedef NS_ENUM(NSInteger, WFAVVideoProfile) {
+    kWFAVVideoProfile120P       = 0,
+    kWFAVVideoProfile120P_3     = 2,
+    kWFAVVideoProfile180P       = 10,
+    kWFAVVideoProfile180P_3     = 12,
+    kWFAVVideoProfile180P_4     = 13,
+    kWFAVVideoProfile240P       = 20,
+    kWFAVVideoProfile240P_3     = 22,
+    kWFAVVideoProfile240P_4     = 23,
+    kWFAVVideoProfile360P       = 30,
+    kWFAVVideoProfile360P_3     = 32,
+    kWFAVVideoProfile360P_4     = 33,
+    kWFAVVideoProfile360P_6     = 35,
+    kWFAVVideoProfile360P_7     = 36,
+    kWFAVVideoProfile360P_8     = 37,
+    kWFAVVideoProfile480P       = 40,
+    kWFAVVideoProfile480P_3     = 42,
+    kWFAVVideoProfile480P_4     = 43,
+    kWFAVVideoProfile480P_6     = 45,
+    kWFAVVideoProfile480P_8     = 47,
+    kWFAVVideoProfile480P_9     = 48,
+    kWFAVVideoProfile720P       = 50,
+    kWFAVVideoProfile720P_3     = 52,
+    kWFAVVideoProfile720P_5     = 54,
+    kWFAVVideoProfile720P_6     = 55,
+    kWFAVVideoProfileDefault    = kWFAVVideoProfile360P
+};
+
+/**
+ 通话结束原因
+ - kWFAVCallEndReasonUnknown: 未知错误
+ - kWFAVCallEndReasonBusy: 忙线
+ - kWFAVCallEndReasonSignalError: 链路错误
+ - kWFAVCallEndReasonHangup: 用户挂断
+ - kWFAVCallEndReasonMediaError: 媒体错误
+ - kWFAVCallEndReasonRemoteHangup: 对方挂断
+ - kWFAVCallEndReasonOpenCameraFailure: 摄像头错误
+ - kWFAVCallEndReasonTimeout: 未接听
+ - kWFAVCallEndReasonAcceptByOtherClient: 被其它端接听
+ */
+typedef NS_ENUM(NSInteger, WFAVCallEndReason) {
+  kWFAVCallEndReasonUnknown = 0,
+  kWFAVCallEndReasonBusy,
+  kWFAVCallEndReasonSignalError,
+  kWFAVCallEndReasonHangup,
+  kWFAVCallEndReasonMediaError,
+  kWFAVCallEndReasonRemoteHangup,
+  kWFAVCallEndReasonOpenCameraFailure,
+  kWFAVCallEndReasonTimeout,
+  kWFAVCallEndReasonAcceptByOtherClient
+};
+
+#pragma mark - 通话监听
+/**
+ 全局的通话事件监听
+ */
+@protocol WFAVEngineDelegate <NSObject>
+
+/**
+ 收到通话的回调
+
+ @param session 通话Session
+ */
+- (void)didReceiveCall:(WFAVCallSession *)session;
+
+/**
+ 播放铃声的回调
+
+ @param isIncoming 来电或去电
+ */
+- (void)shouldStartRing:(BOOL)isIncoming;
+
+/**
+ 停止播放铃声的回调
+ */
+- (void)shouldStopRing;
+
+@end
+
+/**
+ 每次通话Session的事件监听
+ */
+@protocol WFAVCallSessionDelegate <NSObject>
+
+/**
+ 通话状态变更的回调
+ 
+ @param state 通话状态
+ */
+- (void)didChangeState:(WFAVEngineState)state;
+
+/**
+ 通话结束的回调
+
+ @param reason 通话结束的原因
+ */
+- (void)didCallEndWithReason:(WFAVCallEndReason)reason;
+
+/**
+ 通话发生错误的回调
+
+ @param error 错误
+ */
+- (void)didError:(NSError *)error;
+
+/**
+ 通话模式发生变化的回调
+ 
+ @param isAudioOnly 是否是纯语音
+ */
+- (void)didChangeMode:(BOOL)isAudioOnly;
+
+/**
+ 通话状态统计的回调
+
+ @param stats 统计信息
+ */
+- (void)didGetStats:(NSArray *)stats;
+
+/**
+ 创建本地视频流的回调
+
+ @param localVideoTrack 本地视频流
+ */
+- (void)didCreateLocalVideoTrack:(RTCVideoTrack *)localVideoTrack;
+
+/**
+ 收到对方视频流的回调
+
+ @param remoteVideoTrack 对方视频流
+ */
+- (void)didReceiveRemoteVideoTrack:(RTCVideoTrack *)remoteVideoTrack;
+
+@end
+
+#pragma mark - 通话引擎
+
+/**
+ 通话引擎
+ */
+@interface WFAVEngineKit : NSObject
+
+/**
+ 单例
+
+ @return 通话引擎的单例
+ */
++ (instancetype)sharedEngineKit;
+
+/**
+ 添加ICE服务地址和鉴权
+
+ @param address 服务地址
+ @param userName 用户名
+ @param password 密码
+ */
+- (void)addIceServer:(NSString *)address
+            userName:(NSString *)userName
+            password:(NSString *)password;
+
+/**
+ 是否启用统计功能
+ */
+@property(nonatomic, assign) BOOL shouldGetStats;
+
+/**
+ 全局的通话事件监听
+ */
+@property(nonatomic, weak) id<WFAVEngineDelegate> delegate;
+
+/**
+ 当前的通话Session
+ */
+@property(nonatomic, strong, readonly) WFAVCallSession *currentSession;
+
+/**
+ 发起通话
+
+ @param clientId 对方用户ID
+ @param conversation 通话所在会话
+ @param sessionDelegate 通话Session的监听
+ @return 通话Session
+ */
+- (WFAVCallSession *)startCall:(NSString *)clientId
+                     audioOnly:(BOOL)audioOnly
+                  conversation:(WFCCConversation *)conversation
+               sessionDelegate:(id<WFAVCallSessionDelegate>)sessionDelegate;
+
+/**
+ 开启画面预览
+ */
+- (void)startPreview;
+
+/**
+ 设置视频参数
+
+ @param videoProfile 视频属性
+ @param swapWidthHeight 是否旋转
+ */
+- (void)setVideoProfile:(WFAVVideoProfile)videoProfile swapWidthHeight:(BOOL)swapWidthHeight;
+
+
+/*!
+ 模态弹出ViewController,是个工具方法。这里用来弹出通话界面,也可以弹出别的界面,但注意要配对这里的dismiss来关闭界面。弹出通话界面你也可以自己来处理,不一定必须使用此工具方法。
+ */
+- (void)presentViewController:(UIViewController *)viewController;
+
+/*!
+ 取消通话界面
+ */
+- (void)dismissViewController:(UIViewController *)viewController;
+@end
+
+#pragma mark - 通话Session
+/**
+ 通话的Session实体
+ */
+@interface WFAVCallSession : NSObject
+
+/**
+ 通话的唯一值
+ */
+@property(nonatomic, strong, readonly) NSString *callId;
+
+/**
+ 对方的用户ID
+ */
+@property(nonatomic, strong, readonly) NSString *clientId;
+
+/**
+ 通话Session的事件监听
+ */
+@property(nonatomic, weak)id<WFAVCallSessionDelegate> delegate;
+
+/**
+ 通话状态
+ */
+@property(nonatomic, assign, readonly) WFAVEngineState state;
+
+/**
+ 通话的开始时间,unix时间戳,单位为ms
+ */
+@property(nonatomic, assign, readonly) long long startTime;
+
+/**
+ 通话的持续时间,unix时间戳,单位为ms
+ */
+@property(nonatomic, assign, readonly) long long connectedTime;
+
+/**
+ 通话的结束时间,unix时间戳,单位为ms
+ */
+@property(nonatomic, assign, readonly) long long endTime;
+
+/**
+ 通话所在的会话
+ */
+@property(nonatomic, strong, readonly) WFCCConversation *conversation;
+
+/**
+ 是否是语音电话
+ */
+@property(nonatomic, assign, getter=isAudioOnly) BOOL audioOnly;
+
+/**
+ 通话结束原因
+ */
+@property(nonatomic, assign, readonly)WFAVCallEndReason endReason;
+
+/**
+ 是否是语音电话
+ */
+@property(nonatomic, assign, getter=isSpeaker, readonly)BOOL speaker;
+
+/**
+ 接听通话
+ */
+- (void)answerCall:(BOOL)audioOnly;
+
+/**
+ 挂断通话
+ */
+- (void)endCall;
+
+/**
+ 开启或关闭声音
+
+ @param muted 是否关闭
+ @return 操作是否成功
+ */
+- (BOOL)muteAudio:(BOOL)muted;
+
+/**
+ 开启或关闭扬声器
+ 
+ @param speaker 是否使用扬声器
+ @return 操作是否成功
+ */
+- (BOOL)enableSpeaker:(BOOL)speaker;
+
+/**
+ 开启或关闭摄像头
+
+ @param muted 是否关闭
+ @return 操作是否成功
+ */
+- (BOOL)muteVideo:(BOOL)muted;
+
+/**
+ 切换前后摄像头
+ */
+- (void)switchCamera;
+
+/**
+ 设置本地视频视图Container
+ 
+ @param videoContainerView 本地视频视图Container
+ @param scalingType 缩放模式
+ */
+- (void)setupLocalVideoView:(UIView *)videoContainerView scalingType:(WFAVVideoScalingType)scalingType;
+
+/**
+ 设置对端视频视图Container
+ 
+ @param videoContainerView 本地视频视图Container
+ @param scalingType 缩放模式
+ */
+- (void)setupRemoteVideoView:(UIView *)videoContainerView scalingType:(WFAVVideoScalingType)scalingType;
+@end
+

BIN
wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/Info.plist


+ 985 - 0
wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/LICENSE.md

@@ -0,0 +1,985 @@
+# webrtc
+```
+Copyright (c) 2011, The WebRTC project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+This source tree contains third party source code which is governed by third
+party licenses. Paths to the files and associated licenses are collected here.
+
+Files governed by third party licenses:
+base/base64.cc
+base/base64.h
+base/md5.cc
+base/md5.h
+base/sha1.cc
+base/sha1.h
+base/sigslot.cc
+base/sigslot.h
+common_audio/fft4g.c
+common_audio/signal_processing/spl_sqrt_floor.c
+common_audio/signal_processing/spl_sqrt_floor_arm.S
+modules/audio_coding/codecs/g711/main/source/g711.c
+modules/audio_coding/codecs/g711/main/source/g711.h
+modules/audio_coding/codecs/g722/main/source/g722_decode.c
+modules/audio_coding/codecs/g722/main/source/g722_enc_dec.h
+modules/audio_coding/codecs/g722/main/source/g722_encode.c
+modules/audio_coding/codecs/isac/main/source/fft.c
+modules/audio_device/mac/portaudio/pa_memorybarrier.h
+modules/audio_device/mac/portaudio/pa_ringbuffer.c
+modules/audio_device/mac/portaudio/pa_ringbuffer.h
+modules/audio_processing/aec/aec_rdft.c
+system_wrappers/source/condition_variable_event_win.cc
+system_wrappers/source/set_thread_name_win.h
+
+Individual licenses for each file:
+-------------------------------------------------------------------------------
+Files:
+base/base64.cc
+base/base64.h
+
+License:
+//*********************************************************************
+//* Base64 - a simple base64 encoder and decoder.
+//*
+//*     Copyright (c) 1999, Bob Withers - bwit@pobox.com
+//*
+//* This code may be freely used for any purpose, either personal
+//* or commercial, provided the authors copyright notice remains
+//* intact.
+//*
+//* Enhancements by Stanley Yamane:
+//*     o reverse lookup table for the decode function
+//*     o reserve string buffer space in advance
+//*
+//*********************************************************************
+-------------------------------------------------------------------------------
+Files:
+base/md5.cc
+base/md5.h
+
+License:
+/*
+ * This code implements the MD5 message-digest algorithm.
+ * The algorithm is due to Ron Rivest.  This code was
+ * written by Colin Plumb in 1993, no copyright is claimed.
+ * This code is in the public domain; do with it what you wish.
+ *
+-------------------------------------------------------------------------------
+Files:
+base/sha1.cc
+base/sha1.h
+
+License:
+/*
+ * SHA-1 in C
+ * By Steve Reid &lt;sreid@sea-to-sky.net&gt;
+ * 100% Public Domain
+ *
+ * -----------------
+ * Modified 7/98
+ * By James H. Brown &lt;jbrown@burgoyne.com&gt;
+ * Still 100% Public Domain
+ *
+-------------------------------------------------------------------------------
+Files:
+base/sigslot.cc
+base/sigslot.h
+
+License:
+// sigslot.h: Signal/Slot classes
+//
+// Written by Sarah Thompson (sarah@telergy.com) 2002.
+//
+// License: Public domain. You are free to use this code however you like, with
+// the proviso that the author takes on no responsibility or liability for any
+// use.
+-------------------------------------------------------------------------------
+Files:
+common_audio/signal_processing/spl_sqrt_floor.c
+common_audio/signal_processing/spl_sqrt_floor_arm.S
+
+License:
+/*
+ * Written by Wilco Dijkstra, 1996. The following email exchange establishes the
+ * license.
+ *
+ * From: Wilco Dijkstra &lt;Wilco.Dijkstra@ntlworld.com&gt;
+ * Date: Fri, Jun 24, 2011 at 3:20 AM
+ * Subject: Re: sqrt routine
+ * To: Kevin Ma &lt;kma@google.com&gt;
+ * Hi Kevin,
+ * Thanks for asking. Those routines are public domain (originally posted to
+ * comp.sys.arm a long time ago), so you can use them freely for any purpose.
+ * Cheers,
+ * Wilco
+ *
+ * ----- Original Message -----
+ * From: &quot;Kevin Ma&quot; &lt;kma@google.com&gt;
+ * To: &lt;Wilco.Dijkstra@ntlworld.com&gt;
+ * Sent: Thursday, June 23, 2011 11:44 PM
+ * Subject: Fwd: sqrt routine
+ * Hi Wilco,
+ * I saw your sqrt routine from several web sites, including
+ * http://www.finesse.demon.co.uk/steven/sqrt.html.
+ * Just wonder if there's any copyright information with your Successive
+ * approximation routines, or if I can freely use it for any purpose.
+ * Thanks.
+ * Kevin
+ */
+-------------------------------------------------------------------------------
+Files:
+modules/audio_coding/codecs/g711/main/source/g711.c
+modules/audio_coding/codecs/g711/main/source/g711.h
+
+License:
+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * g711.h - In line A-law and u-law conversion routines
+ *
+ * Written by Steve Underwood &lt;steveu@coppice.org&gt;
+ *
+ * Copyright (C) 2001 Steve Underwood
+ *
+ *  Despite my general liking of the GPL, I place this code in the
+ *  public domain for the benefit of all mankind - even the slimy
+ *  ones who might try to proprietize my work and use it to my
+ *  detriment.
+ */
+-------------------------------------------------------------------------------
+Files:
+modules/audio_coding/codecs/g722/main/source/g722_decode.c
+modules/audio_coding/codecs/g722/main/source/g722_enc_dec.h
+modules/audio_coding/codecs/g722/main/source/g722_encode.c
+
+License:
+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * g722_decode.c - The ITU G.722 codec, decode part.
+ *
+ * Written by Steve Underwood &lt;steveu@coppice.org&gt;
+ *
+ * Copyright (C) 2005 Steve Underwood
+ *
+ *  Despite my general liking of the GPL, I place my own contributions
+ *  to this code in the public domain for the benefit of all mankind -
+ *  even the slimy ones who might try to proprietize my work and use it
+ *  to my detriment.
+ *
+ * Based in part on a single channel G.722 codec which is:
+ *
+ * Copyright (c) CMU 1993
+ * Computer Science, Speech Group
+ * Chengxiang Lu and Alex Hauptmann
+ */
+-------------------------------------------------------------------------------
+Files:
+modules/audio_coding/codecs/isac/main/source/fft.c
+
+License:
+/*
+ * Copyright(c)1995,97 Mark Olesen &lt;olesen@me.QueensU.CA&gt;
+ *    Queen's Univ at Kingston (Canada)
+ *
+ * Permission to use, copy, modify, and distribute this software for
+ * any purpose without fee is hereby granted, provided that this
+ * entire notice is included in all copies of any software which is
+ * or includes a copy or modification of this software and in all
+ * copies of the supporting documentation for such software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED &quot;AS IS&quot;, WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR QUEEN'S
+ * UNIVERSITY AT KINGSTON MAKES ANY REPRESENTATION OR WARRANTY OF ANY
+ * KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS
+ * FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ * All of which is to say that you can do what you like with this
+ * source code provided you don't try to sell it as your own and you
+ * include an unaltered copy of this message (including the
+ * copyright).
+ *
+ * It is also implicitly understood that bug fixes and improvements
+ * should make their way back to the general Internet community so
+ * that everyone benefits.
+ */
+-------------------------------------------------------------------------------
+Files:
+modules/audio_device/mac/portaudio/pa_memorybarrier.h
+modules/audio_device/mac/portaudio/pa_ringbuffer.c
+modules/audio_device/mac/portaudio/pa_ringbuffer.h
+
+License:
+/*
+ * $Id: pa_memorybarrier.h 1240 2007-07-17 13:05:07Z bjornroche $
+ * Portable Audio I/O Library
+ * Memory barrier utilities
+ *
+ * Author: Bjorn Roche, XO Audio, LLC
+ *
+ * This program uses the PortAudio Portable Audio Library.
+ * For more information see: http://www.portaudio.com
+ * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files
+ * (the &quot;Software&quot;), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * The text above constitutes the entire PortAudio license; however,
+ * the PortAudio community also makes the following non-binding requests:
+ *
+ * Any person wishing to distribute modifications to the Software is
+ * requested to send the modifications to the original developer so that
+ * they can be incorporated into the canonical version. It is also
+ * requested that these non-binding requests be included along with the
+ * license above.
+ */
+
+/*
+ * $Id: pa_ringbuffer.c 1421 2009-11-18 16:09:05Z bjornroche $
+ * Portable Audio I/O Library
+ * Ring Buffer utility.
+ *
+ * Author: Phil Burk, http://www.softsynth.com
+ * modified for SMP safety on Mac OS X by Bjorn Roche
+ * modified for SMP safety on Linux by Leland Lucius
+ * also, allowed for const where possible
+ * modified for multiple-byte-sized data elements by Sven Fischer
+ *
+ * Note that this is safe only for a single-thread reader and a
+ * single-thread writer.
+ *
+ * This program uses the PortAudio Portable Audio Library.
+ * For more information see: http://www.portaudio.com
+ * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files
+ * (the &quot;Software&quot;), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * The text above constitutes the entire PortAudio license; however,
+ * the PortAudio community also makes the following non-binding requests:
+ *
+ * Any person wishing to distribute modifications to the Software is
+ * requested to send the modifications to the original developer so that
+ * they can be incorporated into the canonical version. It is also
+ * requested that these non-binding requests be included along with the
+ * license above.
+ */
+-------------------------------------------------------------------------------
+Files:
+common_audio/fft4g.c
+modules/audio_processing/aec/aec_rdft.c
+
+License:
+/*
+ * http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html
+ * Copyright Takuya OOURA, 1996-2001
+ *
+ * You may use, copy, modify and distribute this code for any purpose (include
+ * commercial use) and without fee. Please refer to this package when you modify
+ * this code.
+ */
+-------------------------------------------------------------------------------
+Files:
+system_wrappers/source/condition_variable_event_win.cc
+
+Source:
+http://www1.cse.wustl.edu/~schmidt/ACE-copying.html
+
+License:
+Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM),
+and CoSMIC(TM)
+
+ACE(TM), TAO(TM), CIAO(TM), DAnCE&gt;(TM), and CoSMIC(TM) (henceforth referred to
+as &quot;DOC software&quot;) are copyrighted by Douglas C. Schmidt and his research
+group at Washington University, University of California, Irvine, and
+Vanderbilt University, Copyright (c) 1993-2009, all rights reserved. Since DOC
+software is open-source, freely available software, you are free to use,
+modify, copy, and distribute--perpetually and irrevocably--the DOC software
+source code and object code produced from the source, as well as copy and
+distribute modified versions of this software. You must, however, include this
+copyright statement along with any code built using DOC software that you
+release. No copyright statement needs to be provided if you just ship binary
+executables of your software products.
+You can use DOC software in commercial and/or binary software releases and are
+under no obligation to redistribute any of your source code that is built
+using DOC software. Note, however, that you may not misappropriate the DOC
+software code, such as copyrighting it yourself or claiming authorship of the
+DOC software code, in a way that will prevent DOC software from being
+distributed freely using an open-source development model. You needn't inform
+anyone that you're using DOC software in your software, though we encourage
+you to let us know so we can promote your project in the DOC software success
+stories.
+
+The ACE, TAO, CIAO, DAnCE, and CoSMIC web sites are maintained by the DOC
+Group at the Institute for Software Integrated Systems (ISIS) and the Center
+for Distributed Object Computing of Washington University, St. Louis for the
+development of open-source software as part of the open-source software
+community. Submissions are provided by the submitter ``as is'' with no
+warranties whatsoever, including any warranty of merchantability,
+noninfringement of third party intellectual property, or fitness for any
+particular purpose. In no event shall the submitter be liable for any direct,
+indirect, special, exemplary, punitive, or consequential damages, including
+without limitation, lost profits, even if advised of the possibility of such
+damages. Likewise, DOC software is provided as is with no warranties of any
+kind, including the warranties of design, merchantability, and fitness for a
+particular purpose, noninfringement, or arising from a course of dealing,
+usage or trade practice. Washington University, UC Irvine, Vanderbilt
+University, their employees, and students shall have no liability with respect
+to the infringement of copyrights, trade secrets or any patents by DOC
+software or any part thereof. Moreover, in no event will Washington
+University, UC Irvine, or Vanderbilt University, their employees, or students
+be liable for any lost revenue or profits or other special, indirect and
+consequential damages.
+
+DOC software is provided with no support and without any obligation on the
+part of Washington University, UC Irvine, Vanderbilt University, their
+employees, or students to assist in its use, correction, modification, or
+enhancement. A number of companies around the world provide commercial support
+for DOC software, however. DOC software is Y2K-compliant, as long as the
+underlying OS platform is Y2K-compliant. Likewise, DOC software is compliant
+with the new US daylight savings rule passed by Congress as &quot;The Energy Policy
+Act of 2005,&quot; which established new daylight savings times (DST) rules for the
+United States that expand DST as of March 2007. Since DOC software obtains
+time/date and calendaring information from operating systems users will not be
+affected by the new DST rules as long as they upgrade their operating systems
+accordingly.
+
+The names ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), CoSMIC(TM), Washington
+University, UC Irvine, and Vanderbilt University, may not be used to endorse
+or promote products or services derived from this source without express
+written permission from Washington University, UC Irvine, or Vanderbilt
+University. This license grants no permission to call products or services
+derived from this source ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), or CoSMIC(TM),
+nor does it grant permission for the name Washington University, UC Irvine, or
+Vanderbilt University to appear in their names.
+-------------------------------------------------------------------------------
+Files:
+system_wrappers/source/set_thread_name_win.h
+
+Source:
+http://msdn.microsoft.com/en-us/cc300389.aspx#P
+
+License:
+This license governs use of code marked as “sample” or “example” available on
+this web site without a license agreement, as provided under the section above
+titled “NOTICE SPECIFIC TO SOFTWARE AVAILABLE ON THIS WEB SITE.” If you use
+such code (the “software”), you accept this license. If you do not accept the
+license, do not use the software.
+
+1. Definitions
+
+The terms “reproduce,” “reproduction,” “derivative works,” and “distribution”
+have the same meaning here as under U.S. copyright law.
+
+A “contribution” is the original software, or any additions or changes to the
+software.
+
+A “contributor” is any person that distributes its contribution under this
+license.
+
+“Licensed patents” are a contributor’s patent claims that read directly on its
+contribution.
+
+2. Grant of Rights
+
+(A) Copyright Grant - Subject to the terms of this license, including the
+license conditions and limitations in section 3, each contributor grants you a
+non-exclusive, worldwide, royalty-free copyright license to reproduce its
+contribution, prepare derivative works of its contribution, and distribute its
+contribution or any derivative works that you create.
+
+(B) Patent Grant - Subject to the terms of this license, including the license
+conditions and limitations in section 3, each contributor grants you a
+non-exclusive, worldwide, royalty-free license under its licensed patents to
+make, have made, use, sell, offer for sale, import, and/or otherwise dispose
+of its contribution in the software or derivative works of the contribution in
+the software.
+
+3. Conditions and Limitations
+
+(A) No Trademark License- This license does not grant you rights to use any
+contributors’ name, logo, or trademarks.
+
+(B) If you bring a patent claim against any contributor over patents that you
+claim are infringed by the software, your patent license from such contributor
+to the software ends automatically.
+
+(C) If you distribute any portion of the software, you must retain all
+copyright, patent, trademark, and attribution notices that are present in the
+software.
+
+(D) If you distribute any portion of the software in source code form, you may
+do so only under this license by including a complete copy of this license
+with your distribution. If you distribute any portion of the software in
+compiled or object code form, you may only do so under a license that complies
+with this license.
+
+(E) The software is licensed “as-is.” You bear the risk of using it. The
+contributors give no express warranties, guarantees or conditions. You may
+have additional consumer rights under your local laws which this license
+cannot change. To the extent permitted under your local laws, the contributors
+exclude the implied warranties of merchantability, fitness for a particular
+purpose and non-infringement.
+
+(F) Platform Limitation - The licenses granted in sections 2(A) and 2(B)
+extend only to the software or derivative works that you create that run on a
+Microsoft Windows operating system product.
+
+
+```
+
+# boringssl
+```
+BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL
+licensing. Files that are completely new have a Google copyright and an ISC
+license. This license is reproduced at the bottom of this file.
+
+Contributors to BoringSSL are required to follow the CLA rules for Chromium:
+https://cla.developers.google.com/clas
+
+Some files from Intel are under yet another license, which is also included
+underneath.
+
+The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the
+OpenSSL License and the original SSLeay license apply to the toolkit. See below
+for the actual license texts. Actually both licenses are BSD-style Open Source
+licenses. In case of any license issues related to OpenSSL please contact
+openssl-core@openssl.org.
+
+The following are Google-internal bug numbers where explicit permission from
+some authors is recorded for use of their work. (This is purely for our own
+record keeping.)
+  27287199
+  27287880
+  27287883
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    &quot;This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)&quot;
+ *
+ * 4. The names &quot;OpenSSL Toolkit&quot; and &quot;OpenSSL Project&quot; must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called &quot;OpenSSL&quot;
+ *    nor may &quot;OpenSSL&quot; appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    &quot;This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)&quot;
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    &quot;This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)&quot;
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    &quot;This product includes software written by Tim Hudson (tjh@cryptsoft.com)&quot;
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+
+ISC license used for completely new code in BoringSSL:
+
+/* Copyright (c) 2015, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED &quot;AS IS&quot; AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+
+Some files from Intel carry the following license:
+
+# Copyright (c) 2012, Intel Corporation
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# *  Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+# *  Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the
+#    distribution.
+#
+# *  Neither the name of the Intel Corporation nor the names of its
+#    contributors may be used to endorse or promote products derived from
+#    this software without specific prior written permission.
+#
+#
+# THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION &quot;&quot;AS IS&quot;&quot; AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+```
+
+# libsrtp
+```
+/*
+ *	
+ * Copyright (c) 2001-2017 Cisco Systems, Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ *   Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * 
+ *   Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ * 
+ *   Neither the name of the Cisco Systems, Inc. nor the names of its
+ *   contributors may be used to endorse or promote products derived
+ *   from this software without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+```
+
+# libvpx
+```
+Copyright (c) 2010, The WebM Project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google, nor the WebM Project, nor the names
+    of its contributors may be used to endorse or promote products
+    derived from this software without specific prior written
+    permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+```
+
+# libyuv
+```
+Copyright 2011 The LibYuv Project Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+```
+
+# opus
+```
+Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
+                    Jean-Marc Valin, Timothy B. Terriberry,
+                    CSIRO, Gregory Maxwell, Mark Borgerding,
+                    Erik de Castro Lopo
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of Internet Society, IETF or IETF Trust, nor the
+names of specific contributors, may be used to endorse or promote
+products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Opus is subject to the royalty-free patent licenses which are
+specified at:
+
+Xiph.Org Foundation:
+https://datatracker.ietf.org/ipr/1524/
+
+Microsoft Corporation:
+https://datatracker.ietf.org/ipr/1914/
+
+Broadcom Corporation:
+https://datatracker.ietf.org/ipr/1526/
+
+```
+
+# protobuf
+```
+This license applies to all parts of Protocol Buffers except the following:
+
+  - Atomicops support for generic gcc, located in
+    src/google/protobuf/stubs/atomicops_internals_generic_gcc.h.
+    This file is copyrighted by Red Hat Inc.
+
+  - Atomicops support for AIX/POWER, located in
+    src/google/protobuf/stubs/atomicops_internals_power.h.
+    This file is copyrighted by Bloomberg Finance LP.
+
+Copyright 2014, Google Inc.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Code generated by the Protocol Buffer compiler is owned by the owner
+of the input file used when generating it.  This code is not
+standalone and requires a support library to be linked with it.  This
+support library is itself covered by the above license.
+
+```
+
+# usrsctp
+```
+(Copied from the COPYRIGHT file of
+https://code.google.com/p/sctp-refimpl/source/browse/trunk/COPYRIGHT)
+--------------------------------------------------------------------------------
+
+Copyright (c) 2001, 2002 Cisco Systems, Inc.
+Copyright (c) 2002-12 Randall R. Stewart
+Copyright (c) 2002-12 Michael Tuexen
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+```
+
+# zlib
+```
+Copyright (c) 2011, The WebRTC project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+version 1.2.11, January 15th, 2017
+
+Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+
+This software is provided 'as-is', without any express or implied
+warranty.  In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+   claim that you wrote the original software. If you use this software
+   in a product, an acknowledgment in the product documentation would be
+   appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+   misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+```
+

+ 54 - 0
wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/README.md

@@ -0,0 +1,54 @@
+# WebRTC SDK for iOS
+This pod contains the WebRTC iOS SDK in binary form. It is a dynamic library
+that contains the armv7, arm64 and x86_64 slices.
+Bitcode is not supported.
+Our currently provided API’s are Objective C only.
+
+## Getting started
+If you are new to WebRTC valuable resources can be found at webrtc.org/start/.
+More documentation can be found at https://webrtc.org/native-code/ios/.
+Sample code can be found [here](https://webrtc.googlesource.com/src/+/master/examples/objc/AppRTCMobile/).
+
+## Installation
+To integrate the WebRTC SDK into your XCode project add the following to your
+Podfile:
+
+
+```
+source 'https://github.com/CocoaPods/Specs.git'
+target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
+ platform :ios, '9.0'
+ pod 'GoogleWebRTC'
+end
+```
+
+Then, run the following command
+
+```
+$ pod install
+```
+
+## Notice
+While WebRTC source code is licensed under BSD, it depends on many
+other open sourced projects. The list of relevant transitive licenses are
+enclosed in LICENSE.md.
+
+## Terms of Service
+WebRTC is a free, open project that provides browsers and mobile applications
+with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC
+components have been optimized to best serve this purpose.
+
+Our mission: To enable rich, high-quality RTC applications to be developed for
+browsers, mobile platforms, and IoT devices, and allow them all to communicate
+via a common set of protocols.
+
+The WebRTC Mobile libraries are part of Google’s effort to facilitate the
+adoption of WebRTC on Android and iOS. They can be integrated with projects in
+Apple’s Xcode and Android studio directly, giving developers the opportunity to
+start experimenting with WebRTC. The libraries are published weekly as a
+snapshot of the WebRTC source code at
+https://webrtc.googlesource.com/src. They are targeted for
+developers that want to try out WebRTC on mobile devices.
+
+Thank you,
+-The WebRTC Team

BIN
wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/WFAVEngineKit


+ 54 - 0
wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/WebRTC_README.md

@@ -0,0 +1,54 @@
+# WebRTC SDK for iOS
+This pod contains the WebRTC iOS SDK in binary form. It is a dynamic library
+that contains the armv7, arm64 and x86_64 slices.
+Bitcode is not supported.
+Our currently provided API’s are Objective C only.
+
+## Getting started
+If you are new to WebRTC valuable resources can be found at webrtc.org/start/.
+More documentation can be found at https://webrtc.org/native-code/ios/.
+Sample code can be found [here](https://webrtc.googlesource.com/src/+/master/examples/objc/AppRTCMobile/).
+
+## Installation
+To integrate the WebRTC SDK into your XCode project add the following to your
+Podfile:Lt123456
+
+
+```
+source 'https://github.com/CocoaPods/Specs.git'
+target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
+ platform :ios, '9.0'
+ pod 'GoogleWebRTC'
+end
+```
+
+Then, run the following command
+
+```
+$ pod install
+```
+
+## Notice
+While WebRTC source code is licensed under BSD, it depends on many
+other open sourced projects. The list of relevant transitive licenses are
+enclosed in LICENSE.md.
+
+## Terms of Service
+WebRTC is a free, open project that provides browsers and mobile applications
+with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC
+components have been optimized to best serve this purpose.
+
+Our mission: To enable rich, high-quality RTC applications to be developed for
+browsers, mobile platforms, and IoT devices, and allow them all to communicate
+via a common set of protocols.
+
+The WebRTC Mobile libraries are part of Google’s effort to facilitate the
+adoption of WebRTC on Android and iOS. They can be integrated with projects in
+Apple’s Xcode and Android studio directly, giving developers the opportunity to
+start experimenting with WebRTC. The libraries are published weekly as a
+snapshot of the WebRTC source code at
+https://webrtc.googlesource.com/src. They are targeted for
+developers that want to try out WebRTC on mobile devices.
+
+Thank you,
+-The WebRTC Team

+ 132 - 0
wfuikit/WFChatUIKit/AVEngine/WFAVEngineKit.framework/_CodeSignature/CodeResources

@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>files</key>
+	<dict>
+		<key>Headers/WFAVEngineKit.h</key>
+		<data>
+		amw+J6A16OS1FaThj/AzxX2eBZY=
+		</data>
+		<key>Info.plist</key>
+		<data>
+		5I0Nmr2owU7YucxqKOAkGK/EPDM=
+		</data>
+		<key>LICENSE.md</key>
+		<data>
+		jlQkuZATG7iokwVfkqL96JYi2p4=
+		</data>
+	</dict>
+	<key>files2</key>
+	<dict>
+		<key>Headers/WFAVEngineKit.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			amw+J6A16OS1FaThj/AzxX2eBZY=
+			</data>
+			<key>hash2</key>
+			<data>
+			/8j0/Qn6sHJF8IzsG6eSeSnoh50D/gcq5ND1E1Wd4Q8=
+			</data>
+		</dict>
+		<key>LICENSE.md</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			jlQkuZATG7iokwVfkqL96JYi2p4=
+			</data>
+			<key>hash2</key>
+			<data>
+			7LesSVBTFYXmzFLVTM3jC7ZMpbrA9vyKGA/CggbGy8M=
+			</data>
+		</dict>
+	</dict>
+	<key>rules</key>
+	<dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^version.plist$</key>
+		<true/>
+	</dict>
+	<key>rules2</key>
+	<dict>
+		<key>.*\.dSYM($|/)</key>
+		<dict>
+			<key>weight</key>
+			<real>11</real>
+		</dict>
+		<key>^(.*/)?\.DS_Store$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>2000</real>
+		</dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^Info\.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^PkgInfo$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^embedded\.provisionprofile$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^version\.plist$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+	</dict>
+</dict>
+</plist>

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików