text: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: IM.File.proto
  
  #include "IM.File.pb.h"
  
  #include <algorithm>
  
  #include <google/protobuf/stubs/common.h>
  #include <google/protobuf/stubs/port.h>
  #include <google/protobuf/io/coded_stream.h>
  #include <google/protobuf/wire_format_lite_inl.h>
  #include <google/protobuf/io/zero_copy_stream_impl_lite.h>
  // This is a temporary google only hack
  #ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
  #include "third_party/protobuf/version.h"
  #endif
  // @@protoc_insertion_point(includes)
  
  namespace protobuf_IM_2eBaseDefine_2eproto {
  extern PROTOBUF_INTERNAL_EXPORT_protobuf_IM_2eBaseDefine_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_IpAddr;
  extern PROTOBUF_INTERNAL_EXPORT_protobuf_IM_2eBaseDefine_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_OfflineFileInfo;
  }  // namespace protobuf_IM_2eBaseDefine_2eproto
  namespace IM {
  namespace File {
  class IMFileLoginReqDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFileLoginReq>
        _instance;
  } _IMFileLoginReq_default_instance_;
  class IMFileLoginRspDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFileLoginRsp>
        _instance;
  } _IMFileLoginRsp_default_instance_;
  class IMFileStateDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFileState>
        _instance;
  } _IMFileState_default_instance_;
  class IMFilePullDataReqDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFilePullDataReq>
        _instance;
  } _IMFilePullDataReq_default_instance_;
  class IMFilePullDataRspDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFilePullDataRsp>
        _instance;
  } _IMFilePullDataRsp_default_instance_;
  class IMFileReqDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFileReq>
        _instance;
  } _IMFileReq_default_instance_;
  class IMFileRspDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFileRsp>
        _instance;
  } _IMFileRsp_default_instance_;
  class IMFileNotifyDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFileNotify>
        _instance;
  } _IMFileNotify_default_instance_;
  class IMFileHasOfflineReqDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFileHasOfflineReq>
        _instance;
  } _IMFileHasOfflineReq_default_instance_;
  class IMFileHasOfflineRspDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFileHasOfflineRsp>
        _instance;
  } _IMFileHasOfflineRsp_default_instance_;
  class IMFileAddOfflineReqDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFileAddOfflineReq>
        _instance;
  } _IMFileAddOfflineReq_default_instance_;
  class IMFileDelOfflineReqDefaultTypeInternal {
   public:
    ::google::protobuf::internal::ExplicitlyConstructed<IMFileDelOfflineReq>
        _instance;
  } _IMFileDelOfflineReq_default_instance_;
  }  // namespace File
  }  // namespace IM
  namespace protobuf_IM_2eFile_2eproto {
  static void InitDefaultsIMFileLoginReq() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFileLoginReq_default_instance_;
      new (ptr) ::IM::File::IMFileLoginReq();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFileLoginReq::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<0> scc_info_IMFileLoginReq =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsIMFileLoginReq}, {}};
  
  static void InitDefaultsIMFileLoginRsp() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFileLoginRsp_default_instance_;
      new (ptr) ::IM::File::IMFileLoginRsp();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFileLoginRsp::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<0> scc_info_IMFileLoginRsp =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsIMFileLoginRsp}, {}};
  
  static void InitDefaultsIMFileState() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFileState_default_instance_;
      new (ptr) ::IM::File::IMFileState();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFileState::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<0> scc_info_IMFileState =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsIMFileState}, {}};
  
  static void InitDefaultsIMFilePullDataReq() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFilePullDataReq_default_instance_;
      new (ptr) ::IM::File::IMFilePullDataReq();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFilePullDataReq::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<0> scc_info_IMFilePullDataReq =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsIMFilePullDataReq}, {}};
  
  static void InitDefaultsIMFilePullDataRsp() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFilePullDataRsp_default_instance_;
      new (ptr) ::IM::File::IMFilePullDataRsp();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFilePullDataRsp::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<0> scc_info_IMFilePullDataRsp =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsIMFilePullDataRsp}, {}};
  
  static void InitDefaultsIMFileReq() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFileReq_default_instance_;
      new (ptr) ::IM::File::IMFileReq();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFileReq::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<0> scc_info_IMFileReq =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsIMFileReq}, {}};
  
  static void InitDefaultsIMFileRsp() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFileRsp_default_instance_;
      new (ptr) ::IM::File::IMFileRsp();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFileRsp::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<1> scc_info_IMFileRsp =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsIMFileRsp}, {
        &protobuf_IM_2eBaseDefine_2eproto::scc_info_IpAddr.base,}};
  
  static void InitDefaultsIMFileNotify() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFileNotify_default_instance_;
      new (ptr) ::IM::File::IMFileNotify();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFileNotify::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<1> scc_info_IMFileNotify =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsIMFileNotify}, {
        &protobuf_IM_2eBaseDefine_2eproto::scc_info_IpAddr.base,}};
  
  static void InitDefaultsIMFileHasOfflineReq() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFileHasOfflineReq_default_instance_;
      new (ptr) ::IM::File::IMFileHasOfflineReq();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFileHasOfflineReq::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<0> scc_info_IMFileHasOfflineReq =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsIMFileHasOfflineReq}, {}};
  
  static void InitDefaultsIMFileHasOfflineRsp() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFileHasOfflineRsp_default_instance_;
      new (ptr) ::IM::File::IMFileHasOfflineRsp();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFileHasOfflineRsp::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<2> scc_info_IMFileHasOfflineRsp =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsIMFileHasOfflineRsp}, {
        &protobuf_IM_2eBaseDefine_2eproto::scc_info_OfflineFileInfo.base,
        &protobuf_IM_2eBaseDefine_2eproto::scc_info_IpAddr.base,}};
  
  static void InitDefaultsIMFileAddOfflineReq() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFileAddOfflineReq_default_instance_;
      new (ptr) ::IM::File::IMFileAddOfflineReq();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFileAddOfflineReq::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<0> scc_info_IMFileAddOfflineReq =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsIMFileAddOfflineReq}, {}};
  
  static void InitDefaultsIMFileDelOfflineReq() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::IM::File::_IMFileDelOfflineReq_default_instance_;
      new (ptr) ::IM::File::IMFileDelOfflineReq();
      ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
    }
    ::IM::File::IMFileDelOfflineReq::InitAsDefaultInstance();
  }
  
  ::google::protobuf::internal::SCCInfo<0> scc_info_IMFileDelOfflineReq =
      {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsIMFileDelOfflineReq}, {}};
  
  void InitDefaults() {
    ::google::protobuf::internal::InitSCC(&scc_info_IMFileLoginReq.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFileLoginRsp.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFileState.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFilePullDataReq.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFilePullDataRsp.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFileReq.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFileRsp.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFileNotify.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFileHasOfflineReq.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFileHasOfflineRsp.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFileAddOfflineReq.base);
    ::google::protobuf::internal::InitSCC(&scc_info_IMFileDelOfflineReq.base);
  }
  
  }  // namespace protobuf_IM_2eFile_2eproto
  namespace IM {
  namespace File {
  
  // ===================================================================
  
  void IMFileLoginReq::InitAsDefaultInstance() {
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFileLoginReq::kUserIdFieldNumber;
  const int IMFileLoginReq::kTaskIdFieldNumber;
  const int IMFileLoginReq::kFileRoleFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFileLoginReq::IMFileLoginReq()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFileLoginReq.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFileLoginReq)
  }
  IMFileLoginReq::IMFileLoginReq(const IMFileLoginReq& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_task_id()) {
      task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
    }
    ::memcpy(&user_id_, &from.user_id_,
      static_cast<size_t>(reinterpret_cast<char*>(&file_role_) -
      reinterpret_cast<char*>(&user_id_)) + sizeof(file_role_));
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFileLoginReq)
  }
  
  void IMFileLoginReq::SharedCtor() {
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    user_id_ = 0u;
    file_role_ = 1;
  }
  
  IMFileLoginReq::~IMFileLoginReq() {
    // @@protoc_insertion_point(destructor:IM.File.IMFileLoginReq)
    SharedDtor();
  }
  
  void IMFileLoginReq::SharedDtor() {
    task_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFileLoginReq::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFileLoginReq& IMFileLoginReq::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFileLoginReq.base);
    return *internal_default_instance();
  }
  
  
  void IMFileLoginReq::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFileLoginReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 0x00000001u) {
      task_id_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 6u) {
      user_id_ = 0u;
      file_role_ = 1;
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFileLoginReq::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFileLoginReq)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required uint32 user_id = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string task_id = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_task_id()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required .IM.BaseDefine.ClientFileRole file_role = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::IM::BaseDefine::ClientFileRole_IsValid(value)) {
              set_file_role(static_cast< ::IM::BaseDefine::ClientFileRole >(value));
            } else {
              unknown_fields_stream.WriteVarint32(24u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFileLoginReq)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFileLoginReq)
    return false;
  #undef DO_
  }
  
  void IMFileLoginReq::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFileLoginReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required uint32 user_id = 1;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->user_id(), output);
    }
  
    // required string task_id = 2;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        2, this->task_id(), output);
    }
  
    // required .IM.BaseDefine.ClientFileRole file_role = 3;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        3, this->file_role(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFileLoginReq)
  }
  
  size_t IMFileLoginReq::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:IM.File.IMFileLoginReq)
    size_t total_size = 0;
  
    if (has_task_id()) {
      // required string task_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
    }
  
    if (has_user_id()) {
      // required uint32 user_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->user_id());
    }
  
    if (has_file_role()) {
      // required .IM.BaseDefine.ClientFileRole file_role = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->file_role());
    }
  
    return total_size;
  }
  size_t IMFileLoginReq::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFileLoginReq)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    if (((_has_bits_[0] & 0x00000007) ^ 0x00000007) == 0) {  // All required fields are present.
      // required string task_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
  
      // required uint32 user_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->user_id());
  
      // required .IM.BaseDefine.ClientFileRole file_role = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->file_role());
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFileLoginReq::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFileLoginReq*>(&from));
  }
  
  void IMFileLoginReq::MergeFrom(const IMFileLoginReq& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFileLoginReq)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 7u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_task_id();
        task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
      }
      if (cached_has_bits & 0x00000002u) {
        user_id_ = from.user_id_;
      }
      if (cached_has_bits & 0x00000004u) {
        file_role_ = from.file_role_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFileLoginReq::CopyFrom(const IMFileLoginReq& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFileLoginReq)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFileLoginReq::IsInitialized() const {
    if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
    return true;
  }
  
  void IMFileLoginReq::Swap(IMFileLoginReq* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFileLoginReq::InternalSwap(IMFileLoginReq* other) {
    using std::swap;
    task_id_.Swap(&other->task_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(user_id_, other->user_id_);
    swap(file_role_, other->file_role_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFileLoginReq::GetTypeName() const {
    return "IM.File.IMFileLoginReq";
  }
  
  
  // ===================================================================
  
  void IMFileLoginRsp::InitAsDefaultInstance() {
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFileLoginRsp::kResultCodeFieldNumber;
  const int IMFileLoginRsp::kTaskIdFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFileLoginRsp::IMFileLoginRsp()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFileLoginRsp.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFileLoginRsp)
  }
  IMFileLoginRsp::IMFileLoginRsp(const IMFileLoginRsp& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_task_id()) {
      task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
    }
    result_code_ = from.result_code_;
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFileLoginRsp)
  }
  
  void IMFileLoginRsp::SharedCtor() {
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    result_code_ = 0u;
  }
  
  IMFileLoginRsp::~IMFileLoginRsp() {
    // @@protoc_insertion_point(destructor:IM.File.IMFileLoginRsp)
    SharedDtor();
  }
  
  void IMFileLoginRsp::SharedDtor() {
    task_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFileLoginRsp::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFileLoginRsp& IMFileLoginRsp::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFileLoginRsp.base);
    return *internal_default_instance();
  }
  
  
  void IMFileLoginRsp::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFileLoginRsp)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 0x00000001u) {
      task_id_.ClearNonDefaultToEmptyNoArena();
    }
    result_code_ = 0u;
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFileLoginRsp::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFileLoginRsp)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required uint32 result_code = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_result_code();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &result_code_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string task_id = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_task_id()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFileLoginRsp)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFileLoginRsp)
    return false;
  #undef DO_
  }
  
  void IMFileLoginRsp::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFileLoginRsp)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required uint32 result_code = 1;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->result_code(), output);
    }
  
    // required string task_id = 2;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        2, this->task_id(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFileLoginRsp)
  }
  
  size_t IMFileLoginRsp::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:IM.File.IMFileLoginRsp)
    size_t total_size = 0;
  
    if (has_task_id()) {
      // required string task_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
    }
  
    if (has_result_code()) {
      // required uint32 result_code = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->result_code());
    }
  
    return total_size;
  }
  size_t IMFileLoginRsp::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFileLoginRsp)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    if (((_has_bits_[0] & 0x00000003) ^ 0x00000003) == 0) {  // All required fields are present.
      // required string task_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
  
      // required uint32 result_code = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->result_code());
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFileLoginRsp::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFileLoginRsp*>(&from));
  }
  
  void IMFileLoginRsp::MergeFrom(const IMFileLoginRsp& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFileLoginRsp)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_task_id();
        task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
      }
      if (cached_has_bits & 0x00000002u) {
        result_code_ = from.result_code_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFileLoginRsp::CopyFrom(const IMFileLoginRsp& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFileLoginRsp)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFileLoginRsp::IsInitialized() const {
    if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
    return true;
  }
  
  void IMFileLoginRsp::Swap(IMFileLoginRsp* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFileLoginRsp::InternalSwap(IMFileLoginRsp* other) {
    using std::swap;
    task_id_.Swap(&other->task_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(result_code_, other->result_code_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFileLoginRsp::GetTypeName() const {
    return "IM.File.IMFileLoginRsp";
  }
  
  
  // ===================================================================
  
  void IMFileState::InitAsDefaultInstance() {
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFileState::kStateFieldNumber;
  const int IMFileState::kTaskIdFieldNumber;
  const int IMFileState::kUserIdFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFileState::IMFileState()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFileState.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFileState)
  }
  IMFileState::IMFileState(const IMFileState& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_task_id()) {
      task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
    }
    ::memcpy(&state_, &from.state_,
      static_cast<size_t>(reinterpret_cast<char*>(&user_id_) -
      reinterpret_cast<char*>(&state_)) + sizeof(user_id_));
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFileState)
  }
  
  void IMFileState::SharedCtor() {
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&state_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&user_id_) -
        reinterpret_cast<char*>(&state_)) + sizeof(user_id_));
  }
  
  IMFileState::~IMFileState() {
    // @@protoc_insertion_point(destructor:IM.File.IMFileState)
    SharedDtor();
  }
  
  void IMFileState::SharedDtor() {
    task_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFileState::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFileState& IMFileState::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFileState.base);
    return *internal_default_instance();
  }
  
  
  void IMFileState::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFileState)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 0x00000001u) {
      task_id_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 6u) {
      ::memset(&state_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&user_id_) -
          reinterpret_cast<char*>(&state_)) + sizeof(user_id_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFileState::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFileState)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required .IM.BaseDefine.ClientFileState state = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::IM::BaseDefine::ClientFileState_IsValid(value)) {
              set_state(static_cast< ::IM::BaseDefine::ClientFileState >(value));
            } else {
              unknown_fields_stream.WriteVarint32(8u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string task_id = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_task_id()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 user_id = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
            set_has_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFileState)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFileState)
    return false;
  #undef DO_
  }
  
  void IMFileState::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFileState)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required .IM.BaseDefine.ClientFileState state = 1;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        1, this->state(), output);
    }
  
    // required string task_id = 2;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        2, this->task_id(), output);
    }
  
    // required uint32 user_id = 3;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->user_id(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFileState)
  }
  
  size_t IMFileState::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:IM.File.IMFileState)
    size_t total_size = 0;
  
    if (has_task_id()) {
      // required string task_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
    }
  
    if (has_state()) {
      // required .IM.BaseDefine.ClientFileState state = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->state());
    }
  
    if (has_user_id()) {
      // required uint32 user_id = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->user_id());
    }
  
    return total_size;
  }
  size_t IMFileState::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFileState)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    if (((_has_bits_[0] & 0x00000007) ^ 0x00000007) == 0) {  // All required fields are present.
      // required string task_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
  
      // required .IM.BaseDefine.ClientFileState state = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->state());
  
      // required uint32 user_id = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->user_id());
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFileState::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFileState*>(&from));
  }
  
  void IMFileState::MergeFrom(const IMFileState& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFileState)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 7u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_task_id();
        task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
      }
      if (cached_has_bits & 0x00000002u) {
        state_ = from.state_;
      }
      if (cached_has_bits & 0x00000004u) {
        user_id_ = from.user_id_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFileState::CopyFrom(const IMFileState& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFileState)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFileState::IsInitialized() const {
    if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
    return true;
  }
  
  void IMFileState::Swap(IMFileState* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFileState::InternalSwap(IMFileState* other) {
    using std::swap;
    task_id_.Swap(&other->task_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(state_, other->state_);
    swap(user_id_, other->user_id_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFileState::GetTypeName() const {
    return "IM.File.IMFileState";
  }
  
  
  // ===================================================================
  
  void IMFilePullDataReq::InitAsDefaultInstance() {
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFilePullDataReq::kTaskIdFieldNumber;
  const int IMFilePullDataReq::kUserIdFieldNumber;
  const int IMFilePullDataReq::kTransModeFieldNumber;
  const int IMFilePullDataReq::kOffsetFieldNumber;
  const int IMFilePullDataReq::kDataSizeFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFilePullDataReq::IMFilePullDataReq()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFilePullDataReq.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFilePullDataReq)
  }
  IMFilePullDataReq::IMFilePullDataReq(const IMFilePullDataReq& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_task_id()) {
      task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
    }
    ::memcpy(&user_id_, &from.user_id_,
      static_cast<size_t>(reinterpret_cast<char*>(&trans_mode_) -
      reinterpret_cast<char*>(&user_id_)) + sizeof(trans_mode_));
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFilePullDataReq)
  }
  
  void IMFilePullDataReq::SharedCtor() {
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&user_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&data_size_) -
        reinterpret_cast<char*>(&user_id_)) + sizeof(data_size_));
    trans_mode_ = 1;
  }
  
  IMFilePullDataReq::~IMFilePullDataReq() {
    // @@protoc_insertion_point(destructor:IM.File.IMFilePullDataReq)
    SharedDtor();
  }
  
  void IMFilePullDataReq::SharedDtor() {
    task_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFilePullDataReq::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFilePullDataReq& IMFilePullDataReq::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFilePullDataReq.base);
    return *internal_default_instance();
  }
  
  
  void IMFilePullDataReq::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFilePullDataReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 0x00000001u) {
      task_id_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 30u) {
      ::memset(&user_id_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&data_size_) -
          reinterpret_cast<char*>(&user_id_)) + sizeof(data_size_));
      trans_mode_ = 1;
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFilePullDataReq::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFilePullDataReq)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required string task_id = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_task_id()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 user_id = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required .IM.BaseDefine.TransferFileType trans_mode = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::IM::BaseDefine::TransferFileType_IsValid(value)) {
              set_trans_mode(static_cast< ::IM::BaseDefine::TransferFileType >(value));
            } else {
              unknown_fields_stream.WriteVarint32(24u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 offset = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
            set_has_offset();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &offset_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 data_size = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
            set_has_data_size();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &data_size_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFilePullDataReq)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFilePullDataReq)
    return false;
  #undef DO_
  }
  
  void IMFilePullDataReq::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFilePullDataReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required string task_id = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->task_id(), output);
    }
  
    // required uint32 user_id = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->user_id(), output);
    }
  
    // required .IM.BaseDefine.TransferFileType trans_mode = 3;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        3, this->trans_mode(), output);
    }
  
    // required uint32 offset = 4;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->offset(), output);
    }
  
    // required uint32 data_size = 5;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->data_size(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFilePullDataReq)
  }
  
  size_t IMFilePullDataReq::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:IM.File.IMFilePullDataReq)
    size_t total_size = 0;
  
    if (has_task_id()) {
      // required string task_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
    }
  
    if (has_user_id()) {
      // required uint32 user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->user_id());
    }
  
    if (has_offset()) {
      // required uint32 offset = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->offset());
    }
  
    if (has_data_size()) {
      // required uint32 data_size = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->data_size());
    }
  
    if (has_trans_mode()) {
      // required .IM.BaseDefine.TransferFileType trans_mode = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->trans_mode());
    }
  
    return total_size;
  }
  size_t IMFilePullDataReq::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFilePullDataReq)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    if (((_has_bits_[0] & 0x0000001f) ^ 0x0000001f) == 0) {  // All required fields are present.
      // required string task_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
  
      // required uint32 user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->user_id());
  
      // required uint32 offset = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->offset());
  
      // required uint32 data_size = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->data_size());
  
      // required .IM.BaseDefine.TransferFileType trans_mode = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->trans_mode());
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFilePullDataReq::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFilePullDataReq*>(&from));
  }
  
  void IMFilePullDataReq::MergeFrom(const IMFilePullDataReq& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFilePullDataReq)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 31u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_task_id();
        task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
      }
      if (cached_has_bits & 0x00000002u) {
        user_id_ = from.user_id_;
      }
      if (cached_has_bits & 0x00000004u) {
        offset_ = from.offset_;
      }
      if (cached_has_bits & 0x00000008u) {
        data_size_ = from.data_size_;
      }
      if (cached_has_bits & 0x00000010u) {
        trans_mode_ = from.trans_mode_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFilePullDataReq::CopyFrom(const IMFilePullDataReq& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFilePullDataReq)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFilePullDataReq::IsInitialized() const {
    if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false;
    return true;
  }
  
  void IMFilePullDataReq::Swap(IMFilePullDataReq* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFilePullDataReq::InternalSwap(IMFilePullDataReq* other) {
    using std::swap;
    task_id_.Swap(&other->task_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(user_id_, other->user_id_);
    swap(offset_, other->offset_);
    swap(data_size_, other->data_size_);
    swap(trans_mode_, other->trans_mode_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFilePullDataReq::GetTypeName() const {
    return "IM.File.IMFilePullDataReq";
  }
  
  
  // ===================================================================
  
  void IMFilePullDataRsp::InitAsDefaultInstance() {
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFilePullDataRsp::kResultCodeFieldNumber;
  const int IMFilePullDataRsp::kTaskIdFieldNumber;
  const int IMFilePullDataRsp::kUserIdFieldNumber;
  const int IMFilePullDataRsp::kOffsetFieldNumber;
  const int IMFilePullDataRsp::kFileDataFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFilePullDataRsp::IMFilePullDataRsp()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFilePullDataRsp.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFilePullDataRsp)
  }
  IMFilePullDataRsp::IMFilePullDataRsp(const IMFilePullDataRsp& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_task_id()) {
      task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
    }
    file_data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_file_data()) {
      file_data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_data_);
    }
    ::memcpy(&result_code_, &from.result_code_,
      static_cast<size_t>(reinterpret_cast<char*>(&offset_) -
      reinterpret_cast<char*>(&result_code_)) + sizeof(offset_));
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFilePullDataRsp)
  }
  
  void IMFilePullDataRsp::SharedCtor() {
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    file_data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&result_code_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&offset_) -
        reinterpret_cast<char*>(&result_code_)) + sizeof(offset_));
  }
  
  IMFilePullDataRsp::~IMFilePullDataRsp() {
    // @@protoc_insertion_point(destructor:IM.File.IMFilePullDataRsp)
    SharedDtor();
  }
  
  void IMFilePullDataRsp::SharedDtor() {
    task_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    file_data_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFilePullDataRsp::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFilePullDataRsp& IMFilePullDataRsp::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFilePullDataRsp.base);
    return *internal_default_instance();
  }
  
  
  void IMFilePullDataRsp::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFilePullDataRsp)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        task_id_.ClearNonDefaultToEmptyNoArena();
      }
      if (cached_has_bits & 0x00000002u) {
        file_data_.ClearNonDefaultToEmptyNoArena();
      }
    }
    if (cached_has_bits & 28u) {
      ::memset(&result_code_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&offset_) -
          reinterpret_cast<char*>(&result_code_)) + sizeof(offset_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFilePullDataRsp::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFilePullDataRsp)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required uint32 result_code = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_result_code();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &result_code_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string task_id = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_task_id()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 user_id = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
            set_has_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 offset = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
            set_has_offset();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &offset_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required bytes file_data = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                  input, this->mutable_file_data()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFilePullDataRsp)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFilePullDataRsp)
    return false;
  #undef DO_
  }
  
  void IMFilePullDataRsp::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFilePullDataRsp)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required uint32 result_code = 1;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->result_code(), output);
    }
  
    // required string task_id = 2;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        2, this->task_id(), output);
    }
  
    // required uint32 user_id = 3;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->user_id(), output);
    }
  
    // required uint32 offset = 4;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->offset(), output);
    }
  
    // required bytes file_data = 5;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
        5, this->file_data(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFilePullDataRsp)
  }
  
  size_t IMFilePullDataRsp::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:IM.File.IMFilePullDataRsp)
    size_t total_size = 0;
  
    if (has_task_id()) {
      // required string task_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
    }
  
    if (has_file_data()) {
      // required bytes file_data = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->file_data());
    }
  
    if (has_result_code()) {
      // required uint32 result_code = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->result_code());
    }
  
    if (has_user_id()) {
      // required uint32 user_id = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->user_id());
    }
  
    if (has_offset()) {
      // required uint32 offset = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->offset());
    }
  
    return total_size;
  }
  size_t IMFilePullDataRsp::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFilePullDataRsp)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    if (((_has_bits_[0] & 0x0000001f) ^ 0x0000001f) == 0) {  // All required fields are present.
      // required string task_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
  
      // required bytes file_data = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->file_data());
  
      // required uint32 result_code = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->result_code());
  
      // required uint32 user_id = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->user_id());
  
      // required uint32 offset = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->offset());
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFilePullDataRsp::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFilePullDataRsp*>(&from));
  }
  
  void IMFilePullDataRsp::MergeFrom(const IMFilePullDataRsp& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFilePullDataRsp)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 31u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_task_id();
        task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
      }
      if (cached_has_bits & 0x00000002u) {
        set_has_file_data();
        file_data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_data_);
      }
      if (cached_has_bits & 0x00000004u) {
        result_code_ = from.result_code_;
      }
      if (cached_has_bits & 0x00000008u) {
        user_id_ = from.user_id_;
      }
      if (cached_has_bits & 0x00000010u) {
        offset_ = from.offset_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFilePullDataRsp::CopyFrom(const IMFilePullDataRsp& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFilePullDataRsp)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFilePullDataRsp::IsInitialized() const {
    if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false;
    return true;
  }
  
  void IMFilePullDataRsp::Swap(IMFilePullDataRsp* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFilePullDataRsp::InternalSwap(IMFilePullDataRsp* other) {
    using std::swap;
    task_id_.Swap(&other->task_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    file_data_.Swap(&other->file_data_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(result_code_, other->result_code_);
    swap(user_id_, other->user_id_);
    swap(offset_, other->offset_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFilePullDataRsp::GetTypeName() const {
    return "IM.File.IMFilePullDataRsp";
  }
  
  
  // ===================================================================
  
  void IMFileReq::InitAsDefaultInstance() {
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFileReq::kFromUserIdFieldNumber;
  const int IMFileReq::kToUserIdFieldNumber;
  const int IMFileReq::kFileNameFieldNumber;
  const int IMFileReq::kFileSizeFieldNumber;
  const int IMFileReq::kTransModeFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFileReq::IMFileReq()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFileReq.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFileReq)
  }
  IMFileReq::IMFileReq(const IMFileReq& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    file_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_file_name()) {
      file_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_name_);
    }
    ::memcpy(&from_user_id_, &from.from_user_id_,
      static_cast<size_t>(reinterpret_cast<char*>(&trans_mode_) -
      reinterpret_cast<char*>(&from_user_id_)) + sizeof(trans_mode_));
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFileReq)
  }
  
  void IMFileReq::SharedCtor() {
    file_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&from_user_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&file_size_) -
        reinterpret_cast<char*>(&from_user_id_)) + sizeof(file_size_));
    trans_mode_ = 1;
  }
  
  IMFileReq::~IMFileReq() {
    // @@protoc_insertion_point(destructor:IM.File.IMFileReq)
    SharedDtor();
  }
  
  void IMFileReq::SharedDtor() {
    file_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFileReq::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFileReq& IMFileReq::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFileReq.base);
    return *internal_default_instance();
  }
  
  
  void IMFileReq::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFileReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 0x00000001u) {
      file_name_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 30u) {
      ::memset(&from_user_id_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&file_size_) -
          reinterpret_cast<char*>(&from_user_id_)) + sizeof(file_size_));
      trans_mode_ = 1;
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFileReq::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFileReq)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required uint32 from_user_id = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_from_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &from_user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 to_user_id = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_to_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &to_user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string file_name = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_file_name()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 file_size = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
            set_has_file_size();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &file_size_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required .IM.BaseDefine.TransferFileType trans_mode = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::IM::BaseDefine::TransferFileType_IsValid(value)) {
              set_trans_mode(static_cast< ::IM::BaseDefine::TransferFileType >(value));
            } else {
              unknown_fields_stream.WriteVarint32(40u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFileReq)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFileReq)
    return false;
  #undef DO_
  }
  
  void IMFileReq::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFileReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required uint32 from_user_id = 1;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->from_user_id(), output);
    }
  
    // required uint32 to_user_id = 2;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->to_user_id(), output);
    }
  
    // required string file_name = 3;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        3, this->file_name(), output);
    }
  
    // required uint32 file_size = 4;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->file_size(), output);
    }
  
    // required .IM.BaseDefine.TransferFileType trans_mode = 5;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        5, this->trans_mode(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFileReq)
  }
  
  size_t IMFileReq::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:IM.File.IMFileReq)
    size_t total_size = 0;
  
    if (has_file_name()) {
      // required string file_name = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->file_name());
    }
  
    if (has_from_user_id()) {
      // required uint32 from_user_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->from_user_id());
    }
  
    if (has_to_user_id()) {
      // required uint32 to_user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->to_user_id());
    }
  
    if (has_file_size()) {
      // required uint32 file_size = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->file_size());
    }
  
    if (has_trans_mode()) {
      // required .IM.BaseDefine.TransferFileType trans_mode = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->trans_mode());
    }
  
    return total_size;
  }
  size_t IMFileReq::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFileReq)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    if (((_has_bits_[0] & 0x0000001f) ^ 0x0000001f) == 0) {  // All required fields are present.
      // required string file_name = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->file_name());
  
      // required uint32 from_user_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->from_user_id());
  
      // required uint32 to_user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->to_user_id());
  
      // required uint32 file_size = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->file_size());
  
      // required .IM.BaseDefine.TransferFileType trans_mode = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->trans_mode());
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFileReq::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFileReq*>(&from));
  }
  
  void IMFileReq::MergeFrom(const IMFileReq& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFileReq)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 31u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_file_name();
        file_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_name_);
      }
      if (cached_has_bits & 0x00000002u) {
        from_user_id_ = from.from_user_id_;
      }
      if (cached_has_bits & 0x00000004u) {
        to_user_id_ = from.to_user_id_;
      }
      if (cached_has_bits & 0x00000008u) {
        file_size_ = from.file_size_;
      }
      if (cached_has_bits & 0x00000010u) {
        trans_mode_ = from.trans_mode_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFileReq::CopyFrom(const IMFileReq& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFileReq)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFileReq::IsInitialized() const {
    if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false;
    return true;
  }
  
  void IMFileReq::Swap(IMFileReq* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFileReq::InternalSwap(IMFileReq* other) {
    using std::swap;
    file_name_.Swap(&other->file_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(from_user_id_, other->from_user_id_);
    swap(to_user_id_, other->to_user_id_);
    swap(file_size_, other->file_size_);
    swap(trans_mode_, other->trans_mode_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFileReq::GetTypeName() const {
    return "IM.File.IMFileReq";
  }
  
  
  // ===================================================================
  
  void IMFileRsp::InitAsDefaultInstance() {
  }
  void IMFileRsp::clear_ip_addr_list() {
    ip_addr_list_.Clear();
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFileRsp::kResultCodeFieldNumber;
  const int IMFileRsp::kFromUserIdFieldNumber;
  const int IMFileRsp::kToUserIdFieldNumber;
  const int IMFileRsp::kFileNameFieldNumber;
  const int IMFileRsp::kTaskIdFieldNumber;
  const int IMFileRsp::kIpAddrListFieldNumber;
  const int IMFileRsp::kTransModeFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFileRsp::IMFileRsp()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFileRsp.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFileRsp)
  }
  IMFileRsp::IMFileRsp(const IMFileRsp& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        ip_addr_list_(from.ip_addr_list_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    file_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_file_name()) {
      file_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_name_);
    }
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_task_id()) {
      task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
    }
    ::memcpy(&result_code_, &from.result_code_,
      static_cast<size_t>(reinterpret_cast<char*>(&trans_mode_) -
      reinterpret_cast<char*>(&result_code_)) + sizeof(trans_mode_));
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFileRsp)
  }
  
  void IMFileRsp::SharedCtor() {
    file_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&result_code_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&to_user_id_) -
        reinterpret_cast<char*>(&result_code_)) + sizeof(to_user_id_));
    trans_mode_ = 1;
  }
  
  IMFileRsp::~IMFileRsp() {
    // @@protoc_insertion_point(destructor:IM.File.IMFileRsp)
    SharedDtor();
  }
  
  void IMFileRsp::SharedDtor() {
    file_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    task_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFileRsp::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFileRsp& IMFileRsp::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFileRsp.base);
    return *internal_default_instance();
  }
  
  
  void IMFileRsp::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFileRsp)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    ip_addr_list_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        file_name_.ClearNonDefaultToEmptyNoArena();
      }
      if (cached_has_bits & 0x00000002u) {
        task_id_.ClearNonDefaultToEmptyNoArena();
      }
    }
    if (cached_has_bits & 60u) {
      ::memset(&result_code_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&to_user_id_) -
          reinterpret_cast<char*>(&result_code_)) + sizeof(to_user_id_));
      trans_mode_ = 1;
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFileRsp::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFileRsp)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required uint32 result_code = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_result_code();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &result_code_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 from_user_id = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_from_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &from_user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 to_user_id = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
            set_has_to_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &to_user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string file_name = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_file_name()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string task_id = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_task_id()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;
        case 6: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                  input, add_ip_addr_list()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required .IM.BaseDefine.TransferFileType trans_mode = 7;
        case 7: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(56u /* 56 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::IM::BaseDefine::TransferFileType_IsValid(value)) {
              set_trans_mode(static_cast< ::IM::BaseDefine::TransferFileType >(value));
            } else {
              unknown_fields_stream.WriteVarint32(56u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFileRsp)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFileRsp)
    return false;
  #undef DO_
  }
  
  void IMFileRsp::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFileRsp)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required uint32 result_code = 1;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->result_code(), output);
    }
  
    // required uint32 from_user_id = 2;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->from_user_id(), output);
    }
  
    // required uint32 to_user_id = 3;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->to_user_id(), output);
    }
  
    // required string file_name = 4;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        4, this->file_name(), output);
    }
  
    // required string task_id = 5;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        5, this->task_id(), output);
    }
  
    // repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->ip_addr_list_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessage(
        6,
        this->ip_addr_list(static_cast<int>(i)),
        output);
    }
  
    // required .IM.BaseDefine.TransferFileType trans_mode = 7;
    if (cached_has_bits & 0x00000020u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        7, this->trans_mode(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFileRsp)
  }
  
  size_t IMFileRsp::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:IM.File.IMFileRsp)
    size_t total_size = 0;
  
    if (has_file_name()) {
      // required string file_name = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->file_name());
    }
  
    if (has_task_id()) {
      // required string task_id = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
    }
  
    if (has_result_code()) {
      // required uint32 result_code = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->result_code());
    }
  
    if (has_from_user_id()) {
      // required uint32 from_user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->from_user_id());
    }
  
    if (has_to_user_id()) {
      // required uint32 to_user_id = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->to_user_id());
    }
  
    if (has_trans_mode()) {
      // required .IM.BaseDefine.TransferFileType trans_mode = 7;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->trans_mode());
    }
  
    return total_size;
  }
  size_t IMFileRsp::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFileRsp)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    if (((_has_bits_[0] & 0x0000003f) ^ 0x0000003f) == 0) {  // All required fields are present.
      // required string file_name = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->file_name());
  
      // required string task_id = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
  
      // required uint32 result_code = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->result_code());
  
      // required uint32 from_user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->from_user_id());
  
      // required uint32 to_user_id = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->to_user_id());
  
      // required .IM.BaseDefine.TransferFileType trans_mode = 7;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->trans_mode());
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    // repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;
    {
      unsigned int count = static_cast<unsigned int>(this->ip_addr_list_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSize(
            this->ip_addr_list(static_cast<int>(i)));
      }
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFileRsp::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFileRsp*>(&from));
  }
  
  void IMFileRsp::MergeFrom(const IMFileRsp& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFileRsp)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    ip_addr_list_.MergeFrom(from.ip_addr_list_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 63u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_file_name();
        file_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_name_);
      }
      if (cached_has_bits & 0x00000002u) {
        set_has_task_id();
        task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
      }
      if (cached_has_bits & 0x00000004u) {
        result_code_ = from.result_code_;
      }
      if (cached_has_bits & 0x00000008u) {
        from_user_id_ = from.from_user_id_;
      }
      if (cached_has_bits & 0x00000010u) {
        to_user_id_ = from.to_user_id_;
      }
      if (cached_has_bits & 0x00000020u) {
        trans_mode_ = from.trans_mode_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFileRsp::CopyFrom(const IMFileRsp& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFileRsp)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFileRsp::IsInitialized() const {
    if ((_has_bits_[0] & 0x0000003f) != 0x0000003f) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->ip_addr_list())) return false;
    return true;
  }
  
  void IMFileRsp::Swap(IMFileRsp* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFileRsp::InternalSwap(IMFileRsp* other) {
    using std::swap;
    CastToBase(&ip_addr_list_)->InternalSwap(CastToBase(&other->ip_addr_list_));
    file_name_.Swap(&other->file_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    task_id_.Swap(&other->task_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(result_code_, other->result_code_);
    swap(from_user_id_, other->from_user_id_);
    swap(to_user_id_, other->to_user_id_);
    swap(trans_mode_, other->trans_mode_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFileRsp::GetTypeName() const {
    return "IM.File.IMFileRsp";
  }
  
  
  // ===================================================================
  
  void IMFileNotify::InitAsDefaultInstance() {
  }
  void IMFileNotify::clear_ip_addr_list() {
    ip_addr_list_.Clear();
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFileNotify::kFromUserIdFieldNumber;
  const int IMFileNotify::kToUserIdFieldNumber;
  const int IMFileNotify::kFileNameFieldNumber;
  const int IMFileNotify::kFileSizeFieldNumber;
  const int IMFileNotify::kTaskIdFieldNumber;
  const int IMFileNotify::kIpAddrListFieldNumber;
  const int IMFileNotify::kTransModeFieldNumber;
  const int IMFileNotify::kOfflineReadyFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFileNotify::IMFileNotify()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFileNotify.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFileNotify)
  }
  IMFileNotify::IMFileNotify(const IMFileNotify& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        ip_addr_list_(from.ip_addr_list_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    file_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_file_name()) {
      file_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_name_);
    }
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_task_id()) {
      task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
    }
    ::memcpy(&from_user_id_, &from.from_user_id_,
      static_cast<size_t>(reinterpret_cast<char*>(&trans_mode_) -
      reinterpret_cast<char*>(&from_user_id_)) + sizeof(trans_mode_));
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFileNotify)
  }
  
  void IMFileNotify::SharedCtor() {
    file_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&from_user_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&offline_ready_) -
        reinterpret_cast<char*>(&from_user_id_)) + sizeof(offline_ready_));
    trans_mode_ = 1;
  }
  
  IMFileNotify::~IMFileNotify() {
    // @@protoc_insertion_point(destructor:IM.File.IMFileNotify)
    SharedDtor();
  }
  
  void IMFileNotify::SharedDtor() {
    file_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    task_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFileNotify::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFileNotify& IMFileNotify::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFileNotify.base);
    return *internal_default_instance();
  }
  
  
  void IMFileNotify::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFileNotify)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    ip_addr_list_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        file_name_.ClearNonDefaultToEmptyNoArena();
      }
      if (cached_has_bits & 0x00000002u) {
        task_id_.ClearNonDefaultToEmptyNoArena();
      }
    }
    if (cached_has_bits & 124u) {
      ::memset(&from_user_id_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&offline_ready_) -
          reinterpret_cast<char*>(&from_user_id_)) + sizeof(offline_ready_));
      trans_mode_ = 1;
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFileNotify::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFileNotify)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required uint32 from_user_id = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_from_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &from_user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 to_user_id = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_to_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &to_user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string file_name = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_file_name()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 file_size = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
            set_has_file_size();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &file_size_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string task_id = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_task_id()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;
        case 6: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                  input, add_ip_addr_list()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required .IM.BaseDefine.TransferFileType trans_mode = 7;
        case 7: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(56u /* 56 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::IM::BaseDefine::TransferFileType_IsValid(value)) {
              set_trans_mode(static_cast< ::IM::BaseDefine::TransferFileType >(value));
            } else {
              unknown_fields_stream.WriteVarint32(56u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 offline_ready = 8;
        case 8: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(64u /* 64 & 0xFF */)) {
            set_has_offline_ready();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &offline_ready_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFileNotify)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFileNotify)
    return false;
  #undef DO_
  }
  
  void IMFileNotify::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFileNotify)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required uint32 from_user_id = 1;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->from_user_id(), output);
    }
  
    // required uint32 to_user_id = 2;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->to_user_id(), output);
    }
  
    // required string file_name = 3;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        3, this->file_name(), output);
    }
  
    // required uint32 file_size = 4;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->file_size(), output);
    }
  
    // required string task_id = 5;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        5, this->task_id(), output);
    }
  
    // repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->ip_addr_list_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessage(
        6,
        this->ip_addr_list(static_cast<int>(i)),
        output);
    }
  
    // required .IM.BaseDefine.TransferFileType trans_mode = 7;
    if (cached_has_bits & 0x00000040u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        7, this->trans_mode(), output);
    }
  
    // required uint32 offline_ready = 8;
    if (cached_has_bits & 0x00000020u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(8, this->offline_ready(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFileNotify)
  }
  
  size_t IMFileNotify::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:IM.File.IMFileNotify)
    size_t total_size = 0;
  
    if (has_file_name()) {
      // required string file_name = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->file_name());
    }
  
    if (has_task_id()) {
      // required string task_id = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
    }
  
    if (has_from_user_id()) {
      // required uint32 from_user_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->from_user_id());
    }
  
    if (has_to_user_id()) {
      // required uint32 to_user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->to_user_id());
    }
  
    if (has_file_size()) {
      // required uint32 file_size = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->file_size());
    }
  
    if (has_offline_ready()) {
      // required uint32 offline_ready = 8;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->offline_ready());
    }
  
    if (has_trans_mode()) {
      // required .IM.BaseDefine.TransferFileType trans_mode = 7;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->trans_mode());
    }
  
    return total_size;
  }
  size_t IMFileNotify::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFileNotify)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    if (((_has_bits_[0] & 0x0000007f) ^ 0x0000007f) == 0) {  // All required fields are present.
      // required string file_name = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->file_name());
  
      // required string task_id = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
  
      // required uint32 from_user_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->from_user_id());
  
      // required uint32 to_user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->to_user_id());
  
      // required uint32 file_size = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->file_size());
  
      // required uint32 offline_ready = 8;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->offline_ready());
  
      // required .IM.BaseDefine.TransferFileType trans_mode = 7;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->trans_mode());
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    // repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;
    {
      unsigned int count = static_cast<unsigned int>(this->ip_addr_list_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSize(
            this->ip_addr_list(static_cast<int>(i)));
      }
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFileNotify::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFileNotify*>(&from));
  }
  
  void IMFileNotify::MergeFrom(const IMFileNotify& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFileNotify)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    ip_addr_list_.MergeFrom(from.ip_addr_list_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 127u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_file_name();
        file_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_name_);
      }
      if (cached_has_bits & 0x00000002u) {
        set_has_task_id();
        task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
      }
      if (cached_has_bits & 0x00000004u) {
        from_user_id_ = from.from_user_id_;
      }
      if (cached_has_bits & 0x00000008u) {
        to_user_id_ = from.to_user_id_;
      }
      if (cached_has_bits & 0x00000010u) {
        file_size_ = from.file_size_;
      }
      if (cached_has_bits & 0x00000020u) {
        offline_ready_ = from.offline_ready_;
      }
      if (cached_has_bits & 0x00000040u) {
        trans_mode_ = from.trans_mode_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFileNotify::CopyFrom(const IMFileNotify& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFileNotify)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFileNotify::IsInitialized() const {
    if ((_has_bits_[0] & 0x0000007f) != 0x0000007f) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->ip_addr_list())) return false;
    return true;
  }
  
  void IMFileNotify::Swap(IMFileNotify* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFileNotify::InternalSwap(IMFileNotify* other) {
    using std::swap;
    CastToBase(&ip_addr_list_)->InternalSwap(CastToBase(&other->ip_addr_list_));
    file_name_.Swap(&other->file_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    task_id_.Swap(&other->task_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(from_user_id_, other->from_user_id_);
    swap(to_user_id_, other->to_user_id_);
    swap(file_size_, other->file_size_);
    swap(offline_ready_, other->offline_ready_);
    swap(trans_mode_, other->trans_mode_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFileNotify::GetTypeName() const {
    return "IM.File.IMFileNotify";
  }
  
  
  // ===================================================================
  
  void IMFileHasOfflineReq::InitAsDefaultInstance() {
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFileHasOfflineReq::kUserIdFieldNumber;
  const int IMFileHasOfflineReq::kAttachDataFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFileHasOfflineReq::IMFileHasOfflineReq()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFileHasOfflineReq.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFileHasOfflineReq)
  }
  IMFileHasOfflineReq::IMFileHasOfflineReq(const IMFileHasOfflineReq& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    attach_data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_attach_data()) {
      attach_data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.attach_data_);
    }
    user_id_ = from.user_id_;
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFileHasOfflineReq)
  }
  
  void IMFileHasOfflineReq::SharedCtor() {
    attach_data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    user_id_ = 0u;
  }
  
  IMFileHasOfflineReq::~IMFileHasOfflineReq() {
    // @@protoc_insertion_point(destructor:IM.File.IMFileHasOfflineReq)
    SharedDtor();
  }
  
  void IMFileHasOfflineReq::SharedDtor() {
    attach_data_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFileHasOfflineReq::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFileHasOfflineReq& IMFileHasOfflineReq::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFileHasOfflineReq.base);
    return *internal_default_instance();
  }
  
  
  void IMFileHasOfflineReq::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFileHasOfflineReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 0x00000001u) {
      attach_data_.ClearNonDefaultToEmptyNoArena();
    }
    user_id_ = 0u;
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFileHasOfflineReq::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFileHasOfflineReq)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required uint32 user_id = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bytes attach_data = 20;
        case 20: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(162u /* 162 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                  input, this->mutable_attach_data()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFileHasOfflineReq)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFileHasOfflineReq)
    return false;
  #undef DO_
  }
  
  void IMFileHasOfflineReq::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFileHasOfflineReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required uint32 user_id = 1;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->user_id(), output);
    }
  
    // optional bytes attach_data = 20;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
        20, this->attach_data(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFileHasOfflineReq)
  }
  
  size_t IMFileHasOfflineReq::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFileHasOfflineReq)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    // required uint32 user_id = 1;
    if (has_user_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->user_id());
    }
    // optional bytes attach_data = 20;
    if (has_attach_data()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->attach_data());
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFileHasOfflineReq::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFileHasOfflineReq*>(&from));
  }
  
  void IMFileHasOfflineReq::MergeFrom(const IMFileHasOfflineReq& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFileHasOfflineReq)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_attach_data();
        attach_data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.attach_data_);
      }
      if (cached_has_bits & 0x00000002u) {
        user_id_ = from.user_id_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFileHasOfflineReq::CopyFrom(const IMFileHasOfflineReq& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFileHasOfflineReq)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFileHasOfflineReq::IsInitialized() const {
    if ((_has_bits_[0] & 0x00000002) != 0x00000002) return false;
    return true;
  }
  
  void IMFileHasOfflineReq::Swap(IMFileHasOfflineReq* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFileHasOfflineReq::InternalSwap(IMFileHasOfflineReq* other) {
    using std::swap;
    attach_data_.Swap(&other->attach_data_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(user_id_, other->user_id_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFileHasOfflineReq::GetTypeName() const {
    return "IM.File.IMFileHasOfflineReq";
  }
  
  
  // ===================================================================
  
  void IMFileHasOfflineRsp::InitAsDefaultInstance() {
  }
  void IMFileHasOfflineRsp::clear_offline_file_list() {
    offline_file_list_.Clear();
  }
  void IMFileHasOfflineRsp::clear_ip_addr_list() {
    ip_addr_list_.Clear();
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFileHasOfflineRsp::kUserIdFieldNumber;
  const int IMFileHasOfflineRsp::kOfflineFileListFieldNumber;
  const int IMFileHasOfflineRsp::kIpAddrListFieldNumber;
  const int IMFileHasOfflineRsp::kAttachDataFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFileHasOfflineRsp::IMFileHasOfflineRsp()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFileHasOfflineRsp.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFileHasOfflineRsp)
  }
  IMFileHasOfflineRsp::IMFileHasOfflineRsp(const IMFileHasOfflineRsp& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        offline_file_list_(from.offline_file_list_),
        ip_addr_list_(from.ip_addr_list_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    attach_data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_attach_data()) {
      attach_data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.attach_data_);
    }
    user_id_ = from.user_id_;
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFileHasOfflineRsp)
  }
  
  void IMFileHasOfflineRsp::SharedCtor() {
    attach_data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    user_id_ = 0u;
  }
  
  IMFileHasOfflineRsp::~IMFileHasOfflineRsp() {
    // @@protoc_insertion_point(destructor:IM.File.IMFileHasOfflineRsp)
    SharedDtor();
  }
  
  void IMFileHasOfflineRsp::SharedDtor() {
    attach_data_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFileHasOfflineRsp::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFileHasOfflineRsp& IMFileHasOfflineRsp::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFileHasOfflineRsp.base);
    return *internal_default_instance();
  }
  
  
  void IMFileHasOfflineRsp::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFileHasOfflineRsp)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    offline_file_list_.Clear();
    ip_addr_list_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 0x00000001u) {
      attach_data_.ClearNonDefaultToEmptyNoArena();
    }
    user_id_ = 0u;
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFileHasOfflineRsp::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFileHasOfflineRsp)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required uint32 user_id = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                  input, add_offline_file_list()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                  input, add_ip_addr_list()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bytes attach_data = 20;
        case 20: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(162u /* 162 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                  input, this->mutable_attach_data()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFileHasOfflineRsp)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFileHasOfflineRsp)
    return false;
  #undef DO_
  }
  
  void IMFileHasOfflineRsp::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFileHasOfflineRsp)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required uint32 user_id = 1;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->user_id(), output);
    }
  
    // repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->offline_file_list_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessage(
        2,
        this->offline_file_list(static_cast<int>(i)),
        output);
    }
  
    // repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->ip_addr_list_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessage(
        3,
        this->ip_addr_list(static_cast<int>(i)),
        output);
    }
  
    // optional bytes attach_data = 20;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
        20, this->attach_data(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFileHasOfflineRsp)
  }
  
  size_t IMFileHasOfflineRsp::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFileHasOfflineRsp)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    // required uint32 user_id = 1;
    if (has_user_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->user_id());
    }
    // repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;
    {
      unsigned int count = static_cast<unsigned int>(this->offline_file_list_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSize(
            this->offline_file_list(static_cast<int>(i)));
      }
    }
  
    // repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;
    {
      unsigned int count = static_cast<unsigned int>(this->ip_addr_list_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSize(
            this->ip_addr_list(static_cast<int>(i)));
      }
    }
  
    // optional bytes attach_data = 20;
    if (has_attach_data()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->attach_data());
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFileHasOfflineRsp::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFileHasOfflineRsp*>(&from));
  }
  
  void IMFileHasOfflineRsp::MergeFrom(const IMFileHasOfflineRsp& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFileHasOfflineRsp)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    offline_file_list_.MergeFrom(from.offline_file_list_);
    ip_addr_list_.MergeFrom(from.ip_addr_list_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_attach_data();
        attach_data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.attach_data_);
      }
      if (cached_has_bits & 0x00000002u) {
        user_id_ = from.user_id_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFileHasOfflineRsp::CopyFrom(const IMFileHasOfflineRsp& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFileHasOfflineRsp)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFileHasOfflineRsp::IsInitialized() const {
    if ((_has_bits_[0] & 0x00000002) != 0x00000002) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->offline_file_list())) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->ip_addr_list())) return false;
    return true;
  }
  
  void IMFileHasOfflineRsp::Swap(IMFileHasOfflineRsp* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFileHasOfflineRsp::InternalSwap(IMFileHasOfflineRsp* other) {
    using std::swap;
    CastToBase(&offline_file_list_)->InternalSwap(CastToBase(&other->offline_file_list_));
    CastToBase(&ip_addr_list_)->InternalSwap(CastToBase(&other->ip_addr_list_));
    attach_data_.Swap(&other->attach_data_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(user_id_, other->user_id_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFileHasOfflineRsp::GetTypeName() const {
    return "IM.File.IMFileHasOfflineRsp";
  }
  
  
  // ===================================================================
  
  void IMFileAddOfflineReq::InitAsDefaultInstance() {
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFileAddOfflineReq::kFromUserIdFieldNumber;
  const int IMFileAddOfflineReq::kToUserIdFieldNumber;
  const int IMFileAddOfflineReq::kTaskIdFieldNumber;
  const int IMFileAddOfflineReq::kFileNameFieldNumber;
  const int IMFileAddOfflineReq::kFileSizeFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFileAddOfflineReq::IMFileAddOfflineReq()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFileAddOfflineReq.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFileAddOfflineReq)
  }
  IMFileAddOfflineReq::IMFileAddOfflineReq(const IMFileAddOfflineReq& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_task_id()) {
      task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
    }
    file_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_file_name()) {
      file_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_name_);
    }
    ::memcpy(&from_user_id_, &from.from_user_id_,
      static_cast<size_t>(reinterpret_cast<char*>(&file_size_) -
      reinterpret_cast<char*>(&from_user_id_)) + sizeof(file_size_));
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFileAddOfflineReq)
  }
  
  void IMFileAddOfflineReq::SharedCtor() {
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    file_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&from_user_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&file_size_) -
        reinterpret_cast<char*>(&from_user_id_)) + sizeof(file_size_));
  }
  
  IMFileAddOfflineReq::~IMFileAddOfflineReq() {
    // @@protoc_insertion_point(destructor:IM.File.IMFileAddOfflineReq)
    SharedDtor();
  }
  
  void IMFileAddOfflineReq::SharedDtor() {
    task_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    file_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFileAddOfflineReq::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFileAddOfflineReq& IMFileAddOfflineReq::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFileAddOfflineReq.base);
    return *internal_default_instance();
  }
  
  
  void IMFileAddOfflineReq::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFileAddOfflineReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        task_id_.ClearNonDefaultToEmptyNoArena();
      }
      if (cached_has_bits & 0x00000002u) {
        file_name_.ClearNonDefaultToEmptyNoArena();
      }
    }
    if (cached_has_bits & 28u) {
      ::memset(&from_user_id_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&file_size_) -
          reinterpret_cast<char*>(&from_user_id_)) + sizeof(file_size_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFileAddOfflineReq::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFileAddOfflineReq)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required uint32 from_user_id = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_from_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &from_user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 to_user_id = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_to_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &to_user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string task_id = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_task_id()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string file_name = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_file_name()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 file_size = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
            set_has_file_size();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &file_size_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFileAddOfflineReq)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFileAddOfflineReq)
    return false;
  #undef DO_
  }
  
  void IMFileAddOfflineReq::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFileAddOfflineReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required uint32 from_user_id = 1;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->from_user_id(), output);
    }
  
    // required uint32 to_user_id = 2;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->to_user_id(), output);
    }
  
    // required string task_id = 3;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        3, this->task_id(), output);
    }
  
    // required string file_name = 4;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        4, this->file_name(), output);
    }
  
    // required uint32 file_size = 5;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->file_size(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFileAddOfflineReq)
  }
  
  size_t IMFileAddOfflineReq::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:IM.File.IMFileAddOfflineReq)
    size_t total_size = 0;
  
    if (has_task_id()) {
      // required string task_id = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
    }
  
    if (has_file_name()) {
      // required string file_name = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->file_name());
    }
  
    if (has_from_user_id()) {
      // required uint32 from_user_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->from_user_id());
    }
  
    if (has_to_user_id()) {
      // required uint32 to_user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->to_user_id());
    }
  
    if (has_file_size()) {
      // required uint32 file_size = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->file_size());
    }
  
    return total_size;
  }
  size_t IMFileAddOfflineReq::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFileAddOfflineReq)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    if (((_has_bits_[0] & 0x0000001f) ^ 0x0000001f) == 0) {  // All required fields are present.
      // required string task_id = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
  
      // required string file_name = 4;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->file_name());
  
      // required uint32 from_user_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->from_user_id());
  
      // required uint32 to_user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->to_user_id());
  
      // required uint32 file_size = 5;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->file_size());
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFileAddOfflineReq::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFileAddOfflineReq*>(&from));
  }
  
  void IMFileAddOfflineReq::MergeFrom(const IMFileAddOfflineReq& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFileAddOfflineReq)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 31u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_task_id();
        task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
      }
      if (cached_has_bits & 0x00000002u) {
        set_has_file_name();
        file_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_name_);
      }
      if (cached_has_bits & 0x00000004u) {
        from_user_id_ = from.from_user_id_;
      }
      if (cached_has_bits & 0x00000008u) {
        to_user_id_ = from.to_user_id_;
      }
      if (cached_has_bits & 0x00000010u) {
        file_size_ = from.file_size_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFileAddOfflineReq::CopyFrom(const IMFileAddOfflineReq& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFileAddOfflineReq)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFileAddOfflineReq::IsInitialized() const {
    if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false;
    return true;
  }
  
  void IMFileAddOfflineReq::Swap(IMFileAddOfflineReq* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFileAddOfflineReq::InternalSwap(IMFileAddOfflineReq* other) {
    using std::swap;
    task_id_.Swap(&other->task_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    file_name_.Swap(&other->file_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(from_user_id_, other->from_user_id_);
    swap(to_user_id_, other->to_user_id_);
    swap(file_size_, other->file_size_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFileAddOfflineReq::GetTypeName() const {
    return "IM.File.IMFileAddOfflineReq";
  }
  
  
  // ===================================================================
  
  void IMFileDelOfflineReq::InitAsDefaultInstance() {
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int IMFileDelOfflineReq::kFromUserIdFieldNumber;
  const int IMFileDelOfflineReq::kToUserIdFieldNumber;
  const int IMFileDelOfflineReq::kTaskIdFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  IMFileDelOfflineReq::IMFileDelOfflineReq()
    : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
    ::google::protobuf::internal::InitSCC(
        &protobuf_IM_2eFile_2eproto::scc_info_IMFileDelOfflineReq.base);
    SharedCtor();
    // @@protoc_insertion_point(constructor:IM.File.IMFileDelOfflineReq)
  }
  IMFileDelOfflineReq::IMFileDelOfflineReq(const IMFileDelOfflineReq& from)
    : ::google::protobuf::MessageLite(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_task_id()) {
      task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
    }
    ::memcpy(&from_user_id_, &from.from_user_id_,
      static_cast<size_t>(reinterpret_cast<char*>(&to_user_id_) -
      reinterpret_cast<char*>(&from_user_id_)) + sizeof(to_user_id_));
    // @@protoc_insertion_point(copy_constructor:IM.File.IMFileDelOfflineReq)
  }
  
  void IMFileDelOfflineReq::SharedCtor() {
    task_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&from_user_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&to_user_id_) -
        reinterpret_cast<char*>(&from_user_id_)) + sizeof(to_user_id_));
  }
  
  IMFileDelOfflineReq::~IMFileDelOfflineReq() {
    // @@protoc_insertion_point(destructor:IM.File.IMFileDelOfflineReq)
    SharedDtor();
  }
  
  void IMFileDelOfflineReq::SharedDtor() {
    task_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  void IMFileDelOfflineReq::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const IMFileDelOfflineReq& IMFileDelOfflineReq::default_instance() {
    ::google::protobuf::internal::InitSCC(&protobuf_IM_2eFile_2eproto::scc_info_IMFileDelOfflineReq.base);
    return *internal_default_instance();
  }
  
  
  void IMFileDelOfflineReq::Clear() {
  // @@protoc_insertion_point(message_clear_start:IM.File.IMFileDelOfflineReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 0x00000001u) {
      task_id_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 6u) {
      ::memset(&from_user_id_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&to_user_id_) -
          reinterpret_cast<char*>(&from_user_id_)) + sizeof(to_user_id_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool IMFileDelOfflineReq::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
        &_internal_metadata_);
    ::google::protobuf::io::StringOutputStream unknown_fields_output(
        unknown_fields_setter.buffer());
    ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
        &unknown_fields_output, false);
    // @@protoc_insertion_point(parse_start:IM.File.IMFileDelOfflineReq)
    for (;;) {
      ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required uint32 from_user_id = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_from_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &from_user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required uint32 to_user_id = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_to_user_id();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                   input, &to_user_id_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required string task_id = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_task_id()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormatLite::SkipField(
              input, tag, &unknown_fields_stream));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:IM.File.IMFileDelOfflineReq)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:IM.File.IMFileDelOfflineReq)
    return false;
  #undef DO_
  }
  
  void IMFileDelOfflineReq::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:IM.File.IMFileDelOfflineReq)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required uint32 from_user_id = 1;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->from_user_id(), output);
    }
  
    // required uint32 to_user_id = 2;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->to_user_id(), output);
    }
  
    // required string task_id = 3;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        3, this->task_id(), output);
    }
  
    output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                     static_cast<int>(_internal_metadata_.unknown_fields().size()));
    // @@protoc_insertion_point(serialize_end:IM.File.IMFileDelOfflineReq)
  }
  
  size_t IMFileDelOfflineReq::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:IM.File.IMFileDelOfflineReq)
    size_t total_size = 0;
  
    if (has_task_id()) {
      // required string task_id = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
    }
  
    if (has_from_user_id()) {
      // required uint32 from_user_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->from_user_id());
    }
  
    if (has_to_user_id()) {
      // required uint32 to_user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->to_user_id());
    }
  
    return total_size;
  }
  size_t IMFileDelOfflineReq::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:IM.File.IMFileDelOfflineReq)
    size_t total_size = 0;
  
    total_size += _internal_metadata_.unknown_fields().size();
  
    if (((_has_bits_[0] & 0x00000007) ^ 0x00000007) == 0) {  // All required fields are present.
      // required string task_id = 3;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->task_id());
  
      // required uint32 from_user_id = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->from_user_id());
  
      // required uint32 to_user_id = 2;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->to_user_id());
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void IMFileDelOfflineReq::CheckTypeAndMergeFrom(
      const ::google::protobuf::MessageLite& from) {
    MergeFrom(*::google::protobuf::down_cast<const IMFileDelOfflineReq*>(&from));
  }
  
  void IMFileDelOfflineReq::MergeFrom(const IMFileDelOfflineReq& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:IM.File.IMFileDelOfflineReq)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 7u) {
      if (cached_has_bits & 0x00000001u) {
        set_has_task_id();
        task_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.task_id_);
      }
      if (cached_has_bits & 0x00000002u) {
        from_user_id_ = from.from_user_id_;
      }
      if (cached_has_bits & 0x00000004u) {
        to_user_id_ = from.to_user_id_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void IMFileDelOfflineReq::CopyFrom(const IMFileDelOfflineReq& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:IM.File.IMFileDelOfflineReq)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool IMFileDelOfflineReq::IsInitialized() const {
    if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
    return true;
  }
  
  void IMFileDelOfflineReq::Swap(IMFileDelOfflineReq* other) {
    if (other == this) return;
    InternalSwap(other);
  }
  void IMFileDelOfflineReq::InternalSwap(IMFileDelOfflineReq* other) {
    using std::swap;
    task_id_.Swap(&other->task_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(from_user_id_, other->from_user_id_);
    swap(to_user_id_, other->to_user_id_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::std::string IMFileDelOfflineReq::GetTypeName() const {
    return "IM.File.IMFileDelOfflineReq";
  }
  
  
  // @@protoc_insertion_point(namespace_scope)
  }  // namespace File
  }  // namespace IM
  namespace google {
  namespace protobuf {
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFileLoginReq* Arena::CreateMaybeMessage< ::IM::File::IMFileLoginReq >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFileLoginReq >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFileLoginRsp* Arena::CreateMaybeMessage< ::IM::File::IMFileLoginRsp >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFileLoginRsp >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFileState* Arena::CreateMaybeMessage< ::IM::File::IMFileState >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFileState >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFilePullDataReq* Arena::CreateMaybeMessage< ::IM::File::IMFilePullDataReq >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFilePullDataReq >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFilePullDataRsp* Arena::CreateMaybeMessage< ::IM::File::IMFilePullDataRsp >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFilePullDataRsp >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFileReq* Arena::CreateMaybeMessage< ::IM::File::IMFileReq >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFileReq >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFileRsp* Arena::CreateMaybeMessage< ::IM::File::IMFileRsp >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFileRsp >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFileNotify* Arena::CreateMaybeMessage< ::IM::File::IMFileNotify >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFileNotify >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFileHasOfflineReq* Arena::CreateMaybeMessage< ::IM::File::IMFileHasOfflineReq >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFileHasOfflineReq >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFileHasOfflineRsp* Arena::CreateMaybeMessage< ::IM::File::IMFileHasOfflineRsp >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFileHasOfflineRsp >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFileAddOfflineReq* Arena::CreateMaybeMessage< ::IM::File::IMFileAddOfflineReq >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFileAddOfflineReq >(arena);
  }
  template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::IM::File::IMFileDelOfflineReq* Arena::CreateMaybeMessage< ::IM::File::IMFileDelOfflineReq >(Arena* arena) {
    return Arena::CreateInternal< ::IM::File::IMFileDelOfflineReq >(arena);
  }
  }  // namespace protobuf
  }  // namespace google
  
  // @@protoc_insertion_point(global_scope)
  